Использование оператора == дважды в операторе if
Это нормально делать в Java, это работает?
if (turtles.get(h).getX() == turtles.get(g).getX() == 450) {
//stuff here
}
По сути, я хочу проверить, совпадает ли значение X с Y, и это значение должно быть 450.
6 ответов
Нет. Это то же самое, что (turtles.get(h).getX() == turtles.get(g).getX()) == 450 - "несопоставимые типы". if(turtles.get(h).getX() == 450 && turtles.get(g).getX() == 450)
,
Нет. Что вы ожидаете там случиться?
"a == b" вычисляется как логическое значение, поэтому "int == (int == int)" будет вычисляться как "int == логическое", и вы не можете сравнивать и int, и логическое значение.
Кроме того, какую логику вы пытаетесь сделать здесь? if ((a == b) && (b == c))
?
Нет, это не так. Это потому, что результат a == b
является логическим Если вы делаете a == b == c
ты первый сравниваешь a == b
который вернется true
или же false
а затем сравнивая это значение истины с c
,
Обычно не то, что вы хотите!
Обратите внимание, что этот трюк может работать для назначения, потому что результат a = b
является b
(новое значение a
) что значит a = b = c
или даже (a = b) == c
пригодиться иногда.
Или избегайте всех менее читаемых (и подверженных ошибкам) повторений с помощью вспомогательного метода...
public boolean areEqual( int a, int b, int c )
{
return ( a == b ) && ( b == c ) ;
}
Это не сработает, потому что ==
Оператор бинарный.
И даже если бы он работал последовательно, первый набор вернул бы логическое значение, которое не будет работать против следующего целого числа.
Нет, это не будет работать, как объяснено в других постах. Но вы могли бы сделать
if (turtles.get(h).getX() - turtles.get(g).getX() + 450 == 0)