【发布时间】:2017-09-20 14:04:33
【问题描述】:
对于计算 a、b 和 c 之间的中间 int,这 one-liner 是否正确?
注意: 我不想计算平均值,如果这 3 个按从最小到 最大(中位数)。
示例:1、77和34的中间值为34.
public static int midpoint(int a, int b, int c) {
return a <= b ? (c <= a ? a : c <= b ? c : b ) : c <= b ? b : c <= a ? c : a;
}
【问题讨论】:
-
是...但很少进行测试...
-
“代码有效” == codereview.stackexchange.com/tour
-
如果您正在寻找比您更好的解决方案,您必须查看这里stackoverflow.com/questions/1582356/…
-
你的意思是“很少做测试”?有 6 种可能的顺序:
a < b < c、a < c < b、b < a < c、b < c < a、c < a < b、c < b < a。如果所有这六种情况都有效,那么您的代码就可以了。 -
你说“我不想计算中位数......只是中间那个......”这几乎就是中位数的定义。