是否可以将这两行写为三元运算符?

Hai*_*kel 2 java if-statement ternary-operator

示例:

if (i < n) 
    i++;
else 
   j += 2;
Run Code Online (Sandbox Code Playgroud)

我做了:

i += i < n ? 1 : j += 2; 
Run Code Online (Sandbox Code Playgroud)

(但编译器显示错误)

如果可能的话,我如何将这些行写为三元运算符..谢谢......

T.J*_*der 5

(这是"条件"运算符.它是一个三元运算符,而现在Java只有一个,但......)

既然你并不总是改变它的值i,并且Java不允许任意表达式作为独立语句(像其他语言,如JavaScript,那么),你不能使用条件运算符重写那些,除非你给自己一个nop方法或其他东西,所以你可以在表达式上下文中使用条件.或做一些真正令人费解的事情.

也没有理由.if很清楚.

但如果你想,给出:

private static void nop(int n) {
}
Run Code Online (Sandbox Code Playgroud)

然后

nop(i < n ? (i = i + 1) : (j = j + 2));
Run Code Online (Sandbox Code Playgroud)

还有这种大规模复杂的方式:

i = i < n ? i + 1 : (j = j + 2) == j ? i : 0;
Run Code Online (Sandbox Code Playgroud)

... i如果i < n是假的话,它只会归还给自己,因为我们知道这(j = j + 2) == j将是true.

但又一次:没有理由.

  • 无需将`i ++`更改为`(i = i + 1)`,将`j + = 2`更改为`(j = j + 2)`.你仍然可以在条件运算符中使用`++`和`+ =`:`int dummy = i <n?i ++ :( j + = 2);` (2认同)