今日、私はこのパズルに出くわしました。明らかに、これは正しいスタイルではありませんが、出力が出ない理由についてはまだ興味があります。
int x = 9;
int y = 8;
int z = 7;
if (x > 9) if (y > 8) System.out.println("x > 9 and y > 8");
else if (z >= 7) System.out.println("SHOULD OUTPUT THIS x <= 9 and z >= 7");
else
System.out.println("x <= 9 and z < 7");
上記は実行時に出力がありません。しかし、if ステートメントに括弧を追加すると、突然、ロジックが期待どおりに動作します。
int x = 9;
int y = 8;
int z = 7;
if (x > 9) {
if (y > 8) System.out.println("x > 9 and y > 8");
}
else if (z >= 7) System.out.println("SHOULD OUTPUT THIS x <= 9 and z >= 7");
else
System.out.println("x <= 9 and z < 7");
これは、「SHOULD OUTPUT THIS x <= 9 and z >= 7」を出力します。ここで何が起こっているのですか?
ありがとう!