【发布时间】:2021-07-09 07:17:09
【问题描述】:
我只是想知道在 Java 中是否有更有效的方法来做类似的事情。
仅以这个虚拟函数为例
static int getDivision(int number, int divider) {
if(divider == 0) { return -1; }
return (number / divider);
}
如果我有一个三元运算符正在检查该函数的结果,如下所示
public static void main(String[] args) {
int result;
result = getDivision(2, 0);
System.out.println (
result == -1 ? "No" : result
);
}
我必须创建一个变量来存储结果,否则我可以这样做
System.out.println (
getDivision(2, 0) == -1 ? "No" : getDivision(2, 0)
);
但我必须调用该函数两次,这更糟。是否可以使用三元运算符但在条件中包含函数的结果?
System.out.println (
getDivision(2, 0) == -1 ? "No" : /*returned result*/
);
【问题讨论】:
-
不,没有办法在单个表达式中做到这一点,除了创建一个您调用的方法,例如:
myMethodUsingConditionalExpression(getDivision(2, 0))。 -
只写
int result = getDivision(2, 0); System.out.println(result == -1 ? "No" : result);。这里没有效率问题,所以可读性最重要。 -
for (int result = getDivision(2, 0), iterations = 0; iterations < 1; System.out.println(result == -1 ? "No" : result, iterations++);(不认真)。 -
该死,这很糟糕,但非常感谢,我想我会坚持使用当前的
-
在您的三元表达式中,您返回的是字符串或整数。这行不通。