2016-09-08 24 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

应该是'如果(address1.compareTo(address2)== 1)' –

回答

4

您应该比较(==)而不是分配(=)。这可能是非常危险的!为了避免这样的情况下,你可以使用Yoda notation所以不是比较

address1.compareTo(address2) == 1 

您可以比较:

1 == address1.compareTo(address2) 

在缺少=的情况下,会有比较 - 错误。

在你的情况,这将是更好地对比:

address1.compareTo(address2) > 0 

enter image description here

+0

Java中的Yoda符号从来没有任何需要。如果你正在处理一个布尔类型的话,除了在一个非常小的一组用例中,你根本不使用'=='。如果你正在处理一个非布尔值,编译器会拒绝编译'if(foo = 42)',因为你不能使用'int'(等)作为条件。 –