-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 == ブール値」に評価され、int とブール値を比較することはできません。

その上、ここでどのようなロジックを実行しようとしていますか? if ((a == b) && (b == c))?

于 2010-11-25T19:35:43.827 に答える
4

いいえ、ちがいます。これは、 の結果がa == bブール値であるためです。その場合a == b == c、最初a == bにどちらが返されるtruefalseを比較し、次にその真理値を と比較しますc

通常、あなたがやりたいことではありません!

の結果が( の新しい値) であるため、このトリック代入にも有効であることに注意してください。a = bbaa = b = c(a = b) == c

于 2010-11-25T19:35:53.577 に答える
2

または、ヘルパーメソッドを使用して、読みにくい(そしてエラーが発生しやすい)繰り返しをすべて回避します...

public boolean areEqual( int a, int b, int c )
{
    return ( a == b ) && ( b == c ) ;
}
于 2010-11-25T20:03:12.923 に答える
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 に答える
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 に答える