在if语句中使用==运算符两次

时间:2010-11-25 19:32:19

标签: java if-statement equality-operator

在java中这样做是否可行,是否有效?

if (turtles.get(h).getX() == turtles.get(g).getX() == 450) { 
    //stuff here
}

基本上,我想检查X是否与Y的值相同,该值应为450。

6 个答案:

答案 0 :(得分:5)

没有。你期望在那里发生什么?

“a == b”计算为布尔值,因此“int ==(int == int)”将计算为“int == boolean”,并且您无法比较和int和布尔值。

此外,你想在这里做什么样的逻辑? if ((a == b) && (b == c))

答案 1 :(得分:4)

不,不是。这是因为a == b的结果是布尔值。如果您执行a == b == c,则首先要比较a == btruefalse,然后将该真值与c进行比较。

通常不是你想做的事情!

请注意,此技巧 可用于分配,因为a = b的结果为ba的新值),这意味着{{1}或偶尔a = b = c偶尔会有用。

答案 2 :(得分:2)

没有。它与(turtles.get(h).getX()== turtles.get(g).getX())== 450 - “无与伦比的类型”相同。 if(turtles.get(h).getX() == 450 && turtles.get(g).getX() == 450)

答案 3 :(得分:2)

或者使用辅助方法避免所有不太可读(且容易出错)的重复......

public boolean areEqual( int a, int b, int c )
{
    return ( a == b ) && ( b == c ) ;
}

答案 4 :(得分:1)

这不起作用,因为==运算符是二进制的 即使它按顺序工作,第一个集合也会返回一个布尔值,这对后面的整数不起作用。

答案 5 :(得分:-2)

不,它不会起作用,正如其他帖子中所解释的那样。但你可以做到

if (turtles.get(h).getX() - turtles.get(g).getX() + 450 == 0)