目前,我的算法是someValue + x.我试图弄清楚x如果它大于0 我可以变换为1,或者如果它等于0则变为0.
我不想使用if-else来生成它,而只是x在我的算法中自行转换.
例如:如果someValue = 20,x = 4.它会产生20 + 1 = 21.但如果x = 0.它只会产生20个.
谢谢.
pax*_*blo 15
为什么你想在没有if语句的情况下这样做可能有问题但是(从Java 5开始)Integer有一个signum方法,它将返回-1,0或1,具体取决于整数值:
int newVal = someValue + Integer.signum (x);
Run Code Online (Sandbox Code Playgroud)
假设您的输入值始终为零或更多,这将满足您的需求.但它不可能比以下if声明更快:
int newVal = someValue;
if (x > 0) newVal++;
Run Code Online (Sandbox Code Playgroud)
也不比三元版更简洁:
int newVal = (x > 0) ? someValue + 1 : someValue;
Run Code Online (Sandbox Code Playgroud)
我只是将它作为一个选项包括在内,以防你既不想要也不想要if三元变体.
使用
someValue + (x>0? 1: 0);
Run Code Online (Sandbox Code Playgroud)
但是不要担心写一点来得到你需要的东西.编写可理解的代码很重要:)