я нигде не могу найти, как делать методы с? оператор. только то, что я знаю:
boolean something = (!again) ? true : false;
это возвращает мне истину или ложь, но если у меня есть метод if с разрывом? нравится:
if (!again){
break;
}
можно я тоже так сделаю? оператор ? или вы знаете лучший способ? у меня есть этот метод в цикле while.
Я не знаю, что еще сказать об этом .. просто я не могу найти это. искал почти везде. Спасибо
Спасибо за ответ <3
Что не так с оператором if?
break не представляет никакой ценности, поэтому его нельзя использовать как таковое. Как бы вы хотели написать 2+break нет смысла допускать. Возможно связано: Почему break нельзя использовать с тернарным оператором? (хотя это не про Java)
вы можете сделать однострочные операторы if краткими, как это: if (!again) break;
Чего именно вы хотите?
@CommonMan Я думаю, они хотят заменить каждый оператор if тернарным оператором, чтобы код выглядел как здорово
Это похоже на XY-проблема. Почему вы используете break в первую очередь? Как вы думаете, почему смешивание в тернарном операторе (?) будет полезным? Короче говоря, какую проблему действительный вы пытаетесь решить?
break - это не type_variable, это просто инструкция, используемая в сочетании с for или switch (как упоминалось @Pshemo). ? относится к тернарному оператору, который требует type_var для сохранения соответствующего результата. (в вашем случае boolean - это type_var, возвращаемый ?)
ТАКЖЕ boolean something = (!again) ? true : false; слишком многословен. Просто сделайте boolean something = !again;, это даст тот же результат.
если у вас есть метод в цикле while, лучше всего использовать оператор if. ? тернарный оператор следует использовать, когда вы хотите присвоить значение чему-то вроде foo. Строка foo = (! снова) ? "да нет";
@ruslan - Откуда взялась эта часто цитируемая ложь о том, что условный оператор разрешен только в правой части присваивания? Вы можете использовать его везде, где разрешено выражение. Это легальная Java: p("%d", 1+(x>0 ? 3 : 0)*5); хотя и сомнительного вкуса.




break; — это утверждение. В Java операторы и выражения обычно нельзя смешивать, хотя некоторые вещи (присваивания, унарные выражения увеличения/уменьшения, вызовы конструкторов и вызовы методов) являются и тем, и другим.
тернарный оператор работает только с выражениями.
Это так просто. разбить это не выражение, а также «a» и «b» в выражениях cond ? a : bдолжно быть.
if (!again) break; это единственный способ.
условный оператор используется как часть выражение. Так
x ? y : z
является выражением. Вы можете использовать его везде, где требуется выражение. Тем не мение,
if (some_condition) some_action;
является утверждение, и, вообще говоря, выражения и операторы не являются взаимозаменяемыми. Так что, если вы пытаетесь избавиться от утверждения if, это невозможно сделать с помощью ?:.
С другой стороны, some_condition — это (логическое) выражение, поэтому вы мог пишете:
if (x ? y : z) some_action;
пока x, y, z сами являются булевыми подвыражениями. Итак, в ваших первоначальных условиях это законно:
if (!again ? true : false)
break;
Но это избыточно и сводится к
if (!again)
break;
поэтому запись с использованием оператора ?: имеет отрицательное значение.
вы не можете (и не должны) делать это с помощью оператора троичный