【问题标题】:printing operation with the ternary三元打印操作
【发布时间】:2017-02-01 14:01:39
【问题描述】:

我经常使用以下if 块(没有else/elseif 子句;仅用于特定检查)

if(value==10){system.out.print("true");}

所以我尝试将它与三元一起使用:

(a==1)?System.out.println("true");

但它不起作用。主要是,我想知道三元运算符可以像单个if一样吗? (虽然我还没有考虑过,但它可以像 if-else_if-else 子句一样工作吗?)

【问题讨论】:

  • 三元运算符仅适用于左侧的赋值,并不适用于纯粹的执行操作
  • 三元运算符只能用于计算表达式,不能用于执行语句。它不是if 的一般替代品。只需使用 if 声明即可。
  • @KevinEsche 它不是“只处理任务”。它仅适用于评估一个值,该值通常(不总是)位于赋值的右侧。

标签: java ternary-operator


【解决方案1】:

你想要达到的目标是不可能的。但是,如果你必须使用三元,试试这个

String a = (value==10) ? "Yes" : "No";
System.out.println(a);

否则你也可以这样做,

System.out.println((value==10)?"Yes":"No");

【讨论】:

  • 请注意,您可以将整个三元表达式直接作为println 的参数传递。
  • @Berger 是的,但我发现这对于 OP 来说更容易理解。
【解决方案2】:

三元运算符只是 if-else 的简写,但它必须返回一些内容。您需要使用格式

something = (x)?(if x==true, return this):(if x==false, return this)

要做你想做的事,在 print 语句中放一个三元组。即。

System.out.println((a==1)?("true"):(""));

【讨论】:

    【解决方案3】:

    首先正如 Kevin 所提到的,三元运算符应该有一个左手赋值变量。

    其次,它应该总是伴随着一个else操作

    以下表达式有效。

    String s = a==10 ? "true" : "false"; System.out.println(s);

    【讨论】:

      【解决方案4】:

      除了上面提到的答案之外,如果要将字符串聚合到您的表达式中,您可以使用以下代码 sn-p:

      System.out.println("any text you want"+ (value == 10)?"value is greater than 10":"value is lower than 10");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-09
        • 2016-03-27
        • 2017-01-18
        • 2021-06-01
        • 2021-12-19
        • 2010-10-25
        • 2021-09-05
        • 2022-12-05
        相关资源
        最近更新 更多