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"