在 JAVa 中使用三元运算符写 1 行 If 语句
Write 1 line If statement using ternary operator in JAVa
不确定是否可能。我想使用三元运算符编写 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 部分(flag = "pass")或不带它的代码。
提前致谢。
我假设您的实际代码如下所示:
if (preconditionflag.equals("skip")){
System.out.println("Skipping this testcase due to earlier testcase failed");
flag = "skip";
} else {
flag = "pass";
}
如果不是,您的问题的答案已经是否定的,因为您不能 return 从一个方法的一部分,而不是 return 从三元的另一部分的方法操作。
这里反对三元运算的另一个障碍是 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;
}
这是一个完全按照你的问题的答案,但我很难看到它在现实生活中的实际用途。
不确定是否可能。我想使用三元运算符编写 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 部分(flag = "pass")或不带它的代码。 提前致谢。
我假设您的实际代码如下所示:
if (preconditionflag.equals("skip")){
System.out.println("Skipping this testcase due to earlier testcase failed");
flag = "skip";
} else {
flag = "pass";
}
如果不是,您的问题的答案已经是否定的,因为您不能 return 从一个方法的一部分,而不是 return 从三元的另一部分的方法操作。
这里反对三元运算的另一个障碍是 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;
}
这是一个完全按照你的问题的答案,但我很难看到它在现实生活中的实际用途。