示例:
if (i < n)
i++;
else
j += 2;
我做了:
i += i < n ? 1 : j += 2;
(但编译器显示错误)
如果可能的话,我如何将这些行写为三元运算符.. 谢谢...
答案 0 :(得分:5)
(它是“条件”运算符。它是一个三元运算符,而现在Java只有一个,但是......)
由于您并不总是更改i
的值,并且Java不允许任意表达式作为独立语句(像其他语言一样,如JavaScript),因此您无法重写条件运算符除非你给自己一个nop
方法或类似的东西,所以你可以在表达式上下文中使用条件。或者做一些真正令人费解的事情。
也没有理由。 if
非常明确。
但是如果你想,给定:
private static void nop(int n) {
}
然后
nop(i < n ? (i = i + 1) : (j = j + 2));
还有这种大规模复杂的方式:
i = i < n ? i + 1 : (j = j + 2) == j ? i : 0;
...如果i
为假,则只会将i < n
分配回自身,因为我们知道(j = j + 2) == j
将为true
。
但又一次:没有理由。
答案 1 :(得分:2)
条件运算符?
(或三元运算符)用于为单个变量赋值。
Oracle training/examples以这种方式记录此操作:
此运算符也称为三元运算符,因为它使用 三个操作数。在以下示例中,应该读取此运算符 as:“如果someCondition为true,则将value1的值赋给result。 否则,将value2的值赋给result。“
int value1 = 1;
int value2 = 2;
int result;
boolean someCondition = true;
result = someCondition ? value1 : value2;
因此,您不能directly
使用三元运算符将结果分配给j
或 i
。
作为T.J.如图所示,您可以使用复杂的方式使用三元运算符,但它不易读并且容易出错。
因此{@ 1}}声明应该受到青睐
为什么要更加努力地阅读一个看起来很简单的东西?
答案 2 :(得分:2)
你的第一个代码没有返回任何内容,因此使用条件运算符是个坏主意。只需使用if
语句,就更简单了。