如果您写的内容如下:
<?php
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>
有效。但是如果你写的话
boolean condition;
(...)
String out = condition ? "true" : "false";
System.out.println(out);
你得到的不是陈述&#34;错误。 &#34;正确&#34;方式是写(使用大括号或&#34;是否在一行&#34;超出问题的范围):
condition ? System.out.println("true") : System.out.println("false");
为什么呢?一行 if (condition)
System.out.println("true");
else
System.out.println("false");
必须始终返回一个值?
编辑:向所有人指出
if
语法不正确,是的,我得到了那个部分。我不是要求解决方案(尽管
condition ? System.out.println("true") : System.out.println("false");
很好。
@Andrew Tobilko在哪里说明了什么? 那是我感兴趣的。
EDIT2 :接受的答案正是我想要的。感谢
答案 0 :(得分:5)
condition ? System.out.println("true") : System.out.println("false");
不是声明。
来自here:
在计算机科学中,三元运算符是一个运算符,它采用三个参数。
System.out.println("true")
不符合参数,因为方法println()
属于 void 类型。因此,这不是一个声明。
请改用:
System.out.println(condition ? "true" : "false");
答案 1 :(得分:2)
您的情况:
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
方法的调用是编译时错误。更多信息是here。
答案 2 :(得分:0)
这不是正确的语法(您的代码):
condition ? System.out.println("true") : System.out.println("false");
这符合类似目标,但语法正确
System.out.println(Condition ? "true" : "false")
System.out.println()不是一个参数..这只是为了打印。要实际打印,您需要有一个实际的字符串! "example"
。并且不要忘记三元运算符需要三个参数。你评估的条件,如果返回true则返回第一个结果,如果返回false,请帮助!
语法:
ConditionToBeEvaluated ? IfTrue : IfFalse
答案 3 :(得分:0)
三元运算符应该用作:
field = condition ? valueIfTrue : valueIfFalse;
是的,两个可能的选项,每个都需要有一个值(如果你调用void
方法,例如System.out.println(...)
,则不是这种情况。
在你的情况下你可以写:
System.out.println(condition? "true" : "false");