Inline if statement java, почему не работает

Desc: compareChar возвращает true или false. если true, то устанавливает значение кнопки, если false, ничего не делает.

Я пытаюсь использовать:

if compareChar(curChar, toChar("0")) ? getButtons().get(i).setText("§");

NetBeans говорит:

')' исключено
':' исключено

Я попробовал эти комбинации:

if compareChar(curChar, toChar("0")) ? getButtons().get(i).setText("§");
if compareChar(curChar, toChar("0")) ? getButtons().get(i).setText("§") : ;
if compareChar(curChar, toChar("0")) ? getButtons().get(i).setText("§") : 

if (compareChar(curChar, toChar("0"))) ? getButtons().get(i).setText("§");
if (compareChar(curChar, toChar("0"))) ? getButtons().get(i).setText("§") : ;
if (compareChar(curChar, toChar("0"))) ? getButtons().get(i).setText("§") : 

Ответ 1

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

if (compareChar(curChar, toChar("0"))) getButtons().get(i).setText("§");

будет работать достаточно хорошо.

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html

Ответ 2

Синтаксис показан ниже:

"your condition"? "step if true":"step if condition fails"

Ответ 3

(inline if) в java не будет работать, если вы используете оператор "if". Правильный синтаксис приведен в следующем примере:

int y = (c == 19) ? 7 : 11 ; 

или

String y = (s > 120) ? "Slow Down" : "Safe";
System.out.println(y);

as Вы можете видеть, что тип переменной Y такой же, как возвращаемое значение...

в вашем случае лучше использовать нормальное, если утверждение не является строковым, если оно находится в проницательном ответе без "?"

if (compareChar(curChar, toChar("0"))) getButtons().get(i).setText("§");

Ответ 4

cond? statementA: statementB

Равенство:

if (cond)
    statementA
else
    statementB

В вашем случае вы можете просто удалить все "если". Если вы полностью используете if-else вместо?:. Не смешивайте их вместе.

Ответ 5

Ваши дела не имеют возвращаемого значения.

getButtons().get(i).setText("§");

In-line-if является троичной операцией, все троичные операции должны иметь возвращаемое значение. Эта переменная, скорее всего, void и ничего не возвращает, и она не возвращается к переменной. Пример:

int i = 40;
String value = (i < 20) ? "it is too low" : "that is larger than 20";

для вашего случая вам просто нужно выражение if.

if (compareChar(curChar, toChar("0"))) { getButtons().get(i).setText("§"); }

Также отметим, что вы должны использовать фигурные скобки, это делает код более читабельным и объявляет область видимости.

Ответ 6

Это должно быть (состояние)? Истинное утверждение: ложное утверждение

Оставьте "if"