if
ステートメントの形式は次のとおりです。
if (condition) statement
現在、括弧でくくられた条件が2 つあります...これも最終的に値を割り当ててしまいますが、これはおそらくあなたが望むものではありません。
したがって、最初に修正してコンパイルします。
if ((First_Relation = true) & (Second_Relation = true))
次に、割り当てを等価チェックに変更します。そうしないとtrue
、両方の変数に割り当てられ、以前の値に関係なく条件が渡されます。
if ((First_Relation == true) & (Second_Relation == true))
次に、ブール定数との比較を削除します。
if ((First_Relation) & (Second_Relation))
次に、不要なブラケットを削除します。
if (First_Relation & Second_Relation)
次に、変数が Java 命名規則に従うようにします。
if (firstRelation & secondRelation)
次に、 -の&&
代わりにより慣習的なものを使用すると、ショートサーキットになり、ほとんどの場合、必要なものになります。&
&&
if (firstRelation && secondRelation)
if
条件の直後にまだセミコロンがあるため、意味がありません。ステートメントの一部ではないため、常にステートメントを実行します。セミコロンを削除することもできますが、わかりやすくするために中括弧を追加します。System.out.println
if
if (firstRelation && secondRelation) {
System.out.println("insert text here");
}
次に、条件が true の場合にのみ実際に変数を初期化していることに注意してください。したがって、現在、確実に割り当てられていない変数を読み取ろうとすると、コンパイル時にエラーが発生します。
まず、明確な割り当てを修正します。
// Names changed to follow conventions
boolean firstRelation = p > q;
boolean secondRelation = r < s;
...そして、上記のコードは問題ないはずです。
次に、これらの余分な変数から得られるものは実際にはほとんどないことに注目してください。代わりに条件をインライン化します。
if (p > q && r < s) {
System.out.println("Given the values for p,q,r, and s the expression "
+ "(p > q) && !(r < s) evaluates to ";
}
この時点で、さらなるバグがあることが非常に明確になり!(r < s)
ますr < s
。したがって、達成したいことを決定し、コードとメッセージが同じことを反映するようにする必要があります。メッセージも終了しないことに注意してください。実際、全体を次のように単純化できます。
System.out.println("Given the values for p,q,r, and s the expression "
+ "(p > q) && !(r < s) evaluates to " + ((p > q) && !(r < s));
...または実際に表現したいものは何でも。