Если оператор с "?" оператор и сломать java

я нигде не могу найти, как делать методы с? оператор. только то, что я знаю:

boolean something = (!again) ? true : false;

это возвращает мне истину или ложь, но если у меня есть метод if с разрывом? нравится:

if (!again){
break;
}

можно я тоже так сделаю? оператор ? или вы знаете лучший способ? у меня есть этот метод в цикле while.

Я не знаю, что еще сказать об этом .. просто я не могу найти это. искал почти везде. Спасибо

Спасибо за ответ <3

вы не можете (и не должны) делать это с помощью оператора троичный

Kartik 20.02.2019 01:20

Что не так с оператором if?

Erwin Bolwidt 20.02.2019 01:21
break не представляет никакой ценности, поэтому его нельзя использовать как таковое. Как бы вы хотели написать 2+break нет смысла допускать. Возможно связано: Почему break нельзя использовать с тернарным оператором? (хотя это не про Java)
Pshemo 20.02.2019 01:23

вы можете сделать однострочные операторы if краткими, как это: if (!again) break;

Kartik 20.02.2019 01:23

Чего именно вы хотите?

Vishwa Ratna 20.02.2019 01:24

@CommonMan Я думаю, они хотят заменить каждый оператор if тернарным оператором, чтобы код выглядел как здорово

Kartik 20.02.2019 01:29

Это похоже на XY-проблема. Почему вы используете break в первую очередь? Как вы думаете, почему смешивание в тернарном операторе (?) будет полезным? Короче говоря, какую проблему действительный вы пытаетесь решить?

Jordan 20.02.2019 01:29
break - это не type_variable, это просто инструкция, используемая в сочетании с for или switch (как упоминалось @Pshemo). ? относится к тернарному оператору, который требует type_var для сохранения соответствующего результата. (в вашем случае boolean - это type_var, возвращаемый ?)
Traian GEICU 20.02.2019 01:29

ТАКЖЕ boolean something = (!again) ? true : false; слишком многословен. Просто сделайте boolean something = !again;, это даст тот же результат.

Ole V.V. 20.02.2019 01:29

если у вас есть метод в цикле while, лучше всего использовать оператор if. ? тернарный оператор следует использовать, когда вы хотите присвоить значение чему-то вроде foo. Строка foo = (! снова) ? "да нет";

Pallavi Roy 20.02.2019 01:34

@ruslan - Откуда взялась эта часто цитируемая ложь о том, что условный оператор разрешен только в правой части присваивания? Вы можете использовать его везде, где разрешено выражение. Это легальная Java: p("%d", 1+(x>0 ? 3 : 0)*5); хотя и сомнительного вкуса.

user10762593 20.02.2019 03:47
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
11
258
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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;

поэтому запись с использованием оператора ?: имеет отрицательное значение.

Другие вопросы по теме