1-строчные операторы IF в Java - PullRequest
6 голосов
/ 02 февраля 2009

Возможно ли иметь операторы IF без скобок в Java, например:

if (x == y)
  z = x * y;
else
  z = y - x;

Это возможно в PHP, и я не уверен, что делаю что-то не так.

Уточнение: Вот мой фактический код, который я использую:

if (other instanceof Square)
    Square realOther = (Square) other;
else
    Rectangle realOther = (Rectangle) other;

Но я получил ошибки, такие как «Синтаксический токен на realOther, удалите этот токен» и «realOther не может быть разрешен» среди других.

Что я делаю не так?

Ответы [ 13 ]

0 голосов
/ 02 февраля 2009

Я всегда использую фигурные скобки, потому что некоторые языки разрешают их, а некоторые нет, и я никогда не могу держать их прямо. Может быть, я слишком стар, или, может быть, я знаю слишком много языков.

0 голосов
/ 02 февраля 2009

То, что вы можете что-то сделать, не означает, что вы должны это делать.

Рассмотрим, что произойдет, когда вы добавите запись в лог:

if (x==y)
   z=x*y;
else
  System.out.println("Values weren't equal);
  z=y-x;

Сюрприз! «z» никогда не будет равно x * y. Хотя вы можете подумать, что отсутствие скобок делает ваш код более читабельным, но делает его намного менее безопасным. Я говорю это только потому, что мне пришлось устранять тонны кода с таким же дефектом.

0 голосов
/ 02 февраля 2009

Да, но вам нужно держать точку с запятой между if-else, вот так:

if (true) System.out.println("true"); else System.out.println("false");

Также убедитесь, что вы установили оператор сравнения на ==.

...