是否可以将这两行写成三元运算符?
is it possible to write these 2 lines as Ternary Operators?
示例:
if (i < n)
i++;
else
j += 2;
我做到了:
i += i < n ? 1 : j += 2;
(但编译器显示错误)
如果可能的话,我如何将这些行写成三元运算符..
谢谢...
(这是 "conditional" 运算符。它是 a 三元运算符,现在 Java 是唯一的,但是...)
由于您并不总是更改 i
的值,并且 Java 不允许将任意表达式作为独立语句(与某些其他语言一样,例如 JavaScript , do),你不能使用条件运算符重写那些,除非你给自己一个 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 < n
为假,它只是将 i
赋值给它自己,因为我们知道 (j = j + 2) == j
将是 true
.
但是再说一次:没有理由。
条件运算符?
(或三元运算符)旨在为单个变量赋值。
Oracle training/examples 以这种方式记录此操作:
this operator is also known as the ternary operator because it uses
three operands. In the following example, this operator should be read
as: "If someCondition is true, assign the value of value1 to result.
Otherwise, assign the value of value2 to result."
int value1 = 1;
int value2 = 2;
int result;
boolean someCondition = true;
result = someCondition ? value1 : value2;
所以,不,你不能 directly
使用三元运算符将结果分配给 j
或 i
.
如T.J。 Crowder 显示,您可以使用复杂的方式来使用三元运算符,但它不可读且容易出错。
所以应该赞成if
的说法。
为什么要让实际上很容易阅读的东西变得更难阅读?
您的第一个代码没有 return 任何内容,因此使用条件运算符不是一个好主意。就用一个if
语句,更简单。
示例:
if (i < n)
i++;
else
j += 2;
我做到了:
i += i < n ? 1 : j += 2;
(但编译器显示错误)
如果可能的话,我如何将这些行写成三元运算符.. 谢谢...
(这是 "conditional" 运算符。它是 a 三元运算符,现在 Java 是唯一的,但是...)
由于您并不总是更改 i
的值,并且 Java 不允许将任意表达式作为独立语句(与某些其他语言一样,例如 JavaScript , do),你不能使用条件运算符重写那些,除非你给自己一个 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 < n
为假,它只是将 i
赋值给它自己,因为我们知道 (j = j + 2) == j
将是 true
.
但是再说一次:没有理由。
条件运算符?
(或三元运算符)旨在为单个变量赋值。
Oracle training/examples 以这种方式记录此操作:
this operator is also known as the ternary operator because it uses three operands. In the following example, this operator should be read as: "If someCondition is true, assign the value of value1 to result. Otherwise, assign the value of value2 to result."
int value1 = 1;
int value2 = 2;
int result;
boolean someCondition = true;
result = someCondition ? value1 : value2;
所以,不,你不能 directly
使用三元运算符将结果分配给 j
或 i
.
如T.J。 Crowder 显示,您可以使用复杂的方式来使用三元运算符,但它不可读且容易出错。
所以应该赞成if
的说法。
为什么要让实际上很容易阅读的东西变得更难阅读?
您的第一个代码没有 return 任何内容,因此使用条件运算符不是一个好主意。就用一个if
语句,更简单。