Java一行如果不适用于打印

时间:2016-03-23 11:58:46

标签: java if-statement

如果您写的内容如下:

<?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 :接受的答案正是我想要的。感谢

4 个答案:

答案 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))相同。
  • 条件运算符有三个操作数表达式。 ?出现在第一个和第二个表达式之间,:出现在第二个和第三个表达式之间。
  • 第一个表达式必须是booleanBoolean类型,否则会发生编译时错误。
  • 第二个或第三个操作数表达式是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");