Что не так с этим кодом:
void bark(boolean hamlet) {
hamlet ? System.out.println("To Bark.") : System.out.println("Not to Bark");
}
Что не так с этим кодом:
void bark(boolean hamlet) {
hamlet ? System.out.println("To Bark.") : System.out.println("Not to Bark");
}
Тернарные операторы не могут иметь операторов, которые не возвращают значения, методы void
. Вам нужны операторы с возвращаемыми значениями.
Вам нужно переписать его.
void bark(boolean hamlet) {
System.out.println( hamlet ? "To Bark." : "Not to Bark" );
}
Вы можете прочитать, почему в Спецификации языка Java, 15.25. Условный оператор?:
Это ошибка времени компиляции для второго или третьего выражения операнда как вызов метода void.
Вам нужно сделать то же, что и некоторые другие ответы, и применить условный оператор только к аргументу.
Согласно §JLS.15.25:
ConditionalExpression: ConditionalOrExpression ConditionalOrExpression ? Expression : ConditionalExpression
Условный оператор синтаксически право-ассоциативный (он группирует справа налево). Таким образом, a? B: c? D: e? F: g означает то же самое, что и а б:? (? C D: (Е: г)).
Условный оператор имеет три выражения операнда.? появляется между первым и вторым выражениями, и: появляется между второе и третье выражения.
Первое выражение должно иметь тип boolean или Boolean, или ошибка времени компиляции.
Это ошибка времени компиляции для второго или третьего операнда выражение является вызовом метода void.
Я должен представить его, потому что тернарный оператор ожидает присвоить значение. Попробуйте следующее:
void bark(boolean hamlet) {
String result = hamlet ? "To Bark!" : "Not to Bark";
System.out.println(result)
}
Тернарный оператор должен что-то вернуть, вы можете использовать if, если здесь:
void bark(boolean hamlet)
{
if (hamlet)
{
System.out.println("To Bark.")
}
else
{
System.out.println("Not to Bark");
}
}
Тернарные операторы должны что-то вернуть. Поэтому вы можете поместить его в оператор печати следующим образом:
void bark(boolean hamlet)
{
System.out.printf("%s\n", hamlet ? "To Bark." : "Not to Bark");
}
Или:
void bark(boolean hamlet)
{
System.out.println(hamlet ? "To Bark." : "Not to Bark");
}