What's wrong with this code:
void bark(boolean hamlet) {
hamlet ? System.out.println("To Bark.") : System.out.println("Not to Bark");
}
What's wrong with this code:
void bark(boolean hamlet) {
hamlet ? System.out.println("To Bark.") : System.out.println("Not to Bark");
}
Ternary operators can't have statements that don't return values, void
methods. You need statements that have return values.
You need to rewrite it.
void bark(boolean hamlet) {
System.out.println( hamlet ? "To Bark." : "Not to Bark" );
}
You can read why in the Java Language Specification, 15.25. Conditional Operator ? :
It is a compile-time error for either the second or the third operand expression to be an invocation of a void method.
You need to do as several of the other answers suggest, and apply the conditional operator to just the argument.
According to §JLS.15.25:
ConditionalExpression: ConditionalOrExpression ConditionalOrExpression ? Expression : ConditionalExpression
The conditional operator is syntactically right-associative (it groups right-to-left). Thus, a?b:c?d:e?f:g means the same as a?b:(c?d:(e?f:g)).
The conditional operator has three operand expressions. ? appears between the first and second expressions, and : appears between the second and third expressions.
The first expression must be of type boolean or Boolean, or a compile-time error occurs.
It is a compile-time error for either the second or the third operand expression to be an invocation of a void method.
I should imagine its because the ternary operator is expecting to assign a value. Try this:
void bark(boolean hamlet) {
String result = hamlet ? "To Bark!" : "Not to Bark";
System.out.println(result)
}
A ternary statement has to return something, you could use an if here:
void bark(boolean hamlet)
{
if (hamlet)
{
System.out.println("To Bark.")
}
else
{
System.out.println("Not to Bark");
}
}
Ternary operators must return something. So you can put it inside the print statement like such:
void bark(boolean hamlet)
{
System.out.printf("%s\n", hamlet ? "To Bark." : "Not to Bark");
}
Or:
void bark(boolean hamlet)
{
System.out.println(hamlet ? "To Bark." : "Not to Bark");
}