質問: 0 || num > 5)にするとコンパイルするようになりました。 if文ではifが多く続き、それまでの選択肢に当てはまらないものは、 elseで書くようになっているのに、なぜ、elseと書くとコンパイルエラーになり、 else ifとなると、ちゃんとコンパイルされたのでしょうか? ちなみに、elseにした場合は、eclipseでは、赤字で次のようにエラー表示されます。 Exception in thread "main" java.lang.Error: Unresolved compilation problems: The left-hand side of an assignment must be a variable Syntax error, insert "AssignmentOperator Expression" to complete assignment Syntax error, insert";" to complete Statement at ◯◯.if Sample1.main(if Sample.java:34) 上の英語(赤字エラー)の意味は一体、何になり、 なぜelseにしたらエラーになり、else ifでそれが解除されるのでしょうか? どなたかアドバイスして下さいますと幸いです。
回答: 解決法はtacsheavenさんの回答がすべてなのですが、エラーメッセージを読み解くと、 > > The left-hand side of an assignment must be a variable > > > 訳:代入の左辺は変数でなければいけません > > Syntax error, insert "AssignmentOperator Expression" to complete assignment > > > 訳:構文エラー、代入を完了するために「代入演算子」を挿入しなさい > > Syntax error, insert";" to complete Statement > > > 訳:命令文を完了するために";"を挿入しなさい どういうことかというと、elseのあとの`(num == 0 || num > 5)`は条件文ではなく、通常のbooleanの演算と解釈されたのでしょう。だからその演算結果を代入する何かがないとおかしいですよ、と指摘しているのだとおもいます。 ``` else boolean b = (num == 0 || num > 5); ``` こんな感じに書かれることを想定したのだと思います。