我在同学的代码中发现了这个陈述,我不知道这意味着什么。我无法弄清楚操作的顺序或意义。
提前致谢
返回> b? a> C ? a:c:b> C ? b:c;
答案 0 :(得分:4)
这是使用ternary operator。
(condition
?value1
:value2
)如果value1
为真,则评估为condition
,否则为value2
。
嵌套的三元表达式:
return a > b ? a > c ? a : c : b > c ? b : c
相当于:
if (a > b) {
if (a > c) {
return a;
} else {
return c;
}
} else {
if (b > c) {
return b;
} else {
return c;
}
}
它似乎正在返回a
,b
和c
的最大值,因此可以更明确地写为:
return Math.max(a, Math.max(b,c));
答案 1 :(得分:1)
如果> b为真,那么如果> c为真,则为a c。如果a>> b为假,则b> c,则b b,c
答案 2 :(得分:1)
如果你在if else'中写下声明,它将如下所示:
if (a > b) {
if (a > c) {
return a;
} else {
return c;
}
} else {
if (b > c) {
return b;
} else {
return c;
}
}
答案 3 :(得分:0)
在Java中,这个构造(?:
)被称为三元运算符。这是它的工作原理:
a=(b?c:d)
这意味着如果表达式b为真,则指定值为c,如果表达式b为假,则指定值为d。
在你的情况下
return a > b ? a > c ? a : c : b > c ? b : c;
这意味着 如果a>那么b是真的 检查是否> C。如果a> c然后返回否则返回c。 如果a>那么b是假的 检查是否b> C。如果b> c然后返回b否则返回c。 这相当于:
if (a > b) {
if (a > c) {
return a;
} else
return c;
} else {
if (b > c) {
return b;
} else
return c;
}
答案 4 :(得分:0)
在此处查看此问题:what-is-the-java-operator-called-and-what-does-it-do 差点就是说, 如果a>>则返回a b和a> c,否则返回c 否则,如果b> c,返回b,否则返回c。
答案 5 :(得分:0)
另一个答案是:
return a > b ? a > c ? a : c : b > c ? b : c;
手段(用括号括起来使其更具可读性):
return ((a>b) ? ((a>c)?(a):(c)) : ((b>c)?(b):(c)));
使用三元运算符,将(英语)翻译为:
如果大于b且大于c,则返回a。 如果大于b AND小于或等于c,则返回c。 如果小于或等于b AND b大于c,则返回b。 如果小于或等于b AND b小于或等于c,则返回c“。
这只是确定三元组的最大值。 你可以做一些这样简单易读的事情:
return Math.max(Math.max (a,b),c);