Java单行if不适用于打印
如果你写了这样的东西:Java单行if不适用于打印,java,if-statement,Java,If Statement,如果你写了这样的东西: boolean condition; (...) String out = condition ? "true" : "false"; System.out.println(out); 它起作用了。但是如果你写 condition ? System.out.println("true") : System.out.println("false"); 您将得到一个“非语句”错误。“正确”的方法是写(大括号或“是否在一行”的用法超出
boolean condition;
(...)
String out = condition ? "true" : "false";
System.out.println(out);
它起作用了。但是如果你写
condition ? System.out.println("true") : System.out.println("false");
您将得到一个“非语句”错误。“正确”的方法是写(大括号或“是否在一行”的用法超出了问题的范围):
为什么??单行if
s必须始终返回值
编辑:向所有指出
condition ? System.out.println("true") : System.out.println("false");
不是正确的语法,是的,我知道了。我不是在寻求解决方案(尽管
System.out.println(condition ? "true" : "false");
很好
@安德鲁·托比尔科:那是什么意思?那是我感兴趣的
EDIT2:接受的答案正好提供了我想要的答案。谢谢条件?System.out.println(“真”):System.out.println(“假”); 这不是一个声明 发件人: 在计算机科学中,三元运算符是一种接受三个参数的运算符
System.out.println(“true”)
不限定为参数,因为方法println()
为void类型。因此,它不是语句
改用这个:
System.out.println(条件?“true”:“false”);
您的案例:
ConditionalExpression:
ConditionalOrExpression
ConditionalOrExpression ? Expression : ConditionalExpression
System.out.println()
不返回任何值(返回void
)。三元运算符希望其两部分返回语句
System.out.println(condition ? "true" : "false");
System.out.println(condition); // it's an equalent to the previous line
规范中的一些理论:
ConditionalExpression:
ConditionalOrExpression
ConditionalOrExpression ? Expression : ConditionalExpression
- 条件运算符在语法上是右关联的(它从右向左分组)。因此,
的意思与a?b:c?d:e?f:g
相同a?b:(c?d:(e?f:g))
- 条件运算符有三个操作数表达式。
出现在第一个和第二个表达式之间,而?
出现在第二个和第三个表达式之间:
- 第一个表达式的类型必须是
或boolean
,否则会发生编译时错误boolean
- 第二个或第三个操作数表达式调用
方法是编译时错误void
System.out.println(Condition ? "true" : "false")
System.out.println()不是一个参数。这只是为了打印。要真正打印,你需要有一个实际的字符串!“示例”
。别忘了三元运算符有三个参数。你的计算条件,第一个结果如果返回true,如果返回false。希望这有帮助
语法:
ConditionToBeEvaluated ? IfTrue : IfFalse
三元运算符应用作:
field = condition ? valueIfTrue : valueIfFalse;
是的,两个可能的选项都需要有一个值(如果调用void
方法,例如System.out.println(…)
,则情况并非如此)
在你的情况下,你可以写:
System.out.println(condition? "true" : "false");
PS:您的问题似乎正在从“为什么它不工作”变为“为什么java不支持我刚刚提出的这个功能”。在我看来,您做了很多编辑。老实说,您的问题不再是一个问题。老实说,这是迄今为止最糟糕的答案。“三个参数”是怎么回事,他的参数数量是正确的,不是吗?@bvdb No。
System.out.println(condition? "true" : "false");