2016-09-08 8 views
-1

次の行に構文エラーがあります。しかし、私はこのエラーの理由を理解できません。=(等号)=を使った等価比較がJavaで正しく機能しないのはなぜですか?

if (address1.compareTo(address2) = 1) 
     System.out.println(address1 + " is greater than " + address2); 

私は何を達成したいことならば、適切なメッセージを印刷した場合のみcompareTo戻り1されます。

+1

私はあなたがこれを見てする必要があると思います。https://docs.oracle.com/javase/tutorial/java /nutsandbolts/op2.html – Imran

+0

'='を '=='に変更しますか? –

+0

は 'if(address1.compareTo(address2)== 1)'でなければなりません。 –

答えて

4

=)の代わりに(==)を比較する必要があります。それは非常に危険です!そのようなあなたがYoda notationを使用することができますので、状況の代わりに、比較

address1.compareTo(address2) == 1 

を避けるためにあなたは比較することができます:=が欠落した場合には

1 == address1.compareTo(address2) 

は、comparation誤りがあるでしょう。あなたのケースでは

、比較する方がよいでしょう:

address1.compareTo(address2) > 0 

enter image description here

+0

JavaではYodaの表記は必要ありません。ブール値を扱っている場合は、非常に小さな**ユースケースのセットを除いて、 '=='はまったく使用しません。非ブール値を扱う場合、コンパイラは 'int(等) 'を条件として使うことができないので、' if(foo = 42) 'をコンパイルすることを拒否します。 –

関連する問題