用三元运算符简化表达式

问题描述 投票:0回答:1

可以在不引入除法的情况下缩短/简化以下代码吗?

a、b、c 和 y 是任意整数值:

int x = 0;
if (y > 0) {
    x = c < y * a ? 1 : c < y * b ? 2 : 4;
}
if (y < 0) {
    x = c > y * a ? 1 : c > y * b ? 2 : 4;
}
java conditional-operator
1个回答
0
投票

首先应该是这个。

if (y > 0) {
           x = c < y * a ? 1 : c < y * b ? 2 : 4;
} else if (y < 0) {
           x = c > y * a ? 1 : c > y * b ? 2 : 4;
}

简化程度是情人眼里出西施。但你可以像这样重写它。

y = y < 0 ? -y : y; // or use Math.abs()
c = c < 0 ? -c : c;
x = (y != 0) ? c < y * a ? 1 : c < y * b ? 2 : 4 : 0;
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.