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");