Вставка троичного оператора Java! = Проверка нуля и syso не напечатаны

1

У меня есть два вопроса. Первый

int i = 0;
System.out.println("\nint i is" + (i == 0) ? "i==0" : "i!=0");

Я получаю эту ошибку: Тип несоответствия: невозможно преобразовать из String в boolean
Затмение говорит мне
1 быстрое исправление доступно: Insert! = Null check

второй

System.out.println("\nint i is" + (i == 0) != null ? "i==0" : "i!=0");

С проверкой! = Null я не получаю ошибки, но "\nint я is" не печатается, а результат я == 0. Я полностью не понимаю ошибок. Пожалуйста, помогите =)

Теги:
operator-keyword
ternary

1 ответ

2
Лучший ответ

Вы должны правильно скопировать условное выражение:

System.out.println("\nint i is" + ((i == 0) ? "i==0" : "i!=0"));

В противном случае + выполняется перед применением условного выражения, поэтому условие анализируется следующим образом:

"\nint i is" + (i == 0) ? "i==0" : "i!=0"
-----------------------   ------   ------
             |              |         |
Condition ---+              |         |
When the condition is true -+         |
When the condition is false ----------+

"\nint я is" + (i == 0) является допустимым выражением Java, которое создает строку, вызывая ошибку "need a Boolean".

  • 0
    Ты теперь понял! знак равно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню