Использование оператора == дважды в операторе 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) 
Другие вопросы по тегам