-1

在java中这样做可以吗,它有效吗?

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

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

4

6 回答 6

5

不,你希望那里发生什么?

"a == b" 计算为布尔值,因此 "int == (int == int)" 将计算为 "int == boolean",并且您不能比较 int 和布尔值。

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

于 2010-11-25T19:35:43.827 回答
4

不,这不对。这是因为结果a == b是布尔值。如果你这样做a == b == c,你首先比较a == bwhich 将返回trueorfalse然后将该真值与c.

不是你想做的,通常!

请注意,这个技巧可以用于赋值,因为结果a = bb(的新值a),这意味着a = b = c甚至(a = b) == c偶尔会派上用场。

于 2010-11-25T19:35:53.577 回答
2

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

于 2010-11-25T19:38:21.980 回答
2

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

public boolean areEqual( int a, int b, int c )
{
    return ( a == b ) && ( b == c ) ;
}
于 2010-11-25T20:03:12.923 回答
1

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

于 2010-11-25T19:35:35.807 回答
-2

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

if (turtles.get(h).getX() - turtles.get(g).getX() + 450 == 0) 
于 2010-11-25T19:38:45.570 回答