if の条件に代入を書く
このコードを実行するとどうなるか。
public class Main {
public static void main(String[] args) {
boolean done = false;
if (done = true) {
System.out.println("done");
} else {
System.out.println("not yet");
}
}
}
- A
doneと出力される - B
not yetと出力される - C コンパイルエラーになる
- D 何も出力されない
正解と解説を見る
正解: A
- A:
done = trueは代入で、式の値は true なので if のブロックが実行されます。 - B:
=は比較ではなく代入です。代入した値 true が条件になります。 - C: boolean 型への代入なので、条件として使えてコンパイルできます。
- D: if か else のどちらかは必ず実行されます。
ポイント
done = trueは比較ではなく代入で、式の値は代入した値 (true) です。boolean なので条件として使えます。- int の場合 (
if (x = 1)) は条件が int になるのでコンパイルエラーです。
「分岐文 (if、if/else、switch) の使用」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)