次の行に構文エラーがあります。しかし、私はこのエラーの理由を理解できません。=(等号)=を使った等価比較がJavaで正しく機能しないのはなぜですか?
if (address1.compareTo(address2) = 1)
System.out.println(address1 + " is greater than " + address2);
私は何を達成したいことならば、適切なメッセージを印刷した場合のみcompareTo
戻り1
されます。
次の行に構文エラーがあります。しかし、私はこのエラーの理由を理解できません。=(等号)=を使った等価比較がJavaで正しく機能しないのはなぜですか?
if (address1.compareTo(address2) = 1)
System.out.println(address1 + " is greater than " + address2);
私は何を達成したいことならば、適切なメッセージを印刷した場合のみcompareTo
戻り1
されます。
(=
)の代わりに(==
)を比較する必要があります。それは非常に危険です!そのようなあなたがYoda notation
を使用することができますので、状況の代わりに、比較
address1.compareTo(address2) == 1
を避けるためにあなたは比較することができます:=
が欠落した場合には
1 == address1.compareTo(address2)
は、comparation誤りがあるでしょう。あなたのケースでは
、比較する方がよいでしょう:
address1.compareTo(address2) > 0
JavaではYodaの表記は必要ありません。ブール値を扱っている場合は、非常に小さな**ユースケースのセットを除いて、 '=='はまったく使用しません。非ブール値を扱う場合、コンパイラは 'int(等) 'を条件として使うことができないので、' if(foo = 42) 'をコンパイルすることを拒否します。 –
私はあなたがこれを見てする必要があると思います。https://docs.oracle.com/javase/tutorial/java /nutsandbolts/op2.html – Imran
'='を '=='に変更しますか? –
は 'if(address1.compareTo(address2)== 1)'でなければなりません。 –