【问题标题】:Write 1 line If statement using ternary operator in JAVa在 JAVA 中使用三元运算符编写 1 行 If 语句
【发布时间】:2018-04-18 23:24:16
【问题描述】:

不确定它是否可能。我想使用三元运算符编写 1 行 if 条件语句。这是我的代码:

if(preconditionflag.equals("skip")){
System.out.println("Skipping this testcase due to earlier testcase failed");
return flag = "skip";
} else {
flag = "pass";
}

precondflag 和 flag 是字符串参数。此外,“else”部分是可选的,因此请提供带有 else 部分(标志 =“pass”)或不带它的代码。 提前致谢。

【问题讨论】:

  • 不确定是否可能。有可能。
  • this: precondflag == "skip" 从来没有在 java 中
  • if 在您的示例中包含 return 关键字,它将控制流移动到调用方法的位置。三元运算符不能这样做。它仅基于条件返回您指定的两个值之一。我不确定您在这里要做什么,不清楚的问题往往会被否决。

标签: java ternary-operator ternary


【解决方案1】:

我假设您的实际代码如下所示:

if (preconditionflag.equals("skip")){
    System.out.println("Skipping this testcase due to earlier testcase failed");
    flag = "skip";
} else {
    flag = "pass";
}

如果不是,那么你的问题的答案已经是no了,因为你不能从一个方法返回,也不能从三元运算另一部分的方法返回。

这里反对三元运算的另一个障碍是 STDOUT 上的输出。三元运算符不允许这样做,但如果你真的需要,你可以通过创建一个辅助方法来解决它:

private void myMethod() {
    ...
    flag = preconditionflag.equals("skip") ?
           showMessageAndReturn("Skipping this testcase due to earlier testcase failed", "skip") :
           "pass";
    ...
}

private String showMessageAndReturn(String message, String retVal) {
    System.out.println(message);
    return retVal;
}

这是一个完全按照你的问题的答案,但我很难看到它在现实生活中的实际用途。

【讨论】:

  • 谢谢。让我解释一下实际用途。当任一测试应用程序退出或不稳定并继续加载直到超时时,前置条件标志变为“跳过”。因此,当 preconditionflag 变为“skip”时,我想将 flag 指定为“skip”并调用 return 以跳过执行中的剩余步骤。稍后将使用 flag 状态“skip”将结果写回 Excel 中。你的回答非常接近我的需要。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-15
  • 2021-09-10
  • 1970-01-01
  • 2017-10-20
  • 2018-12-08
  • 2013-05-17
相关资源
最近更新 更多