将"X"转换为1或0,如果其> 0或== 0

Bre*_*ent 1 java algorithm

目前,我的算法是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三元变体.


hel*_*ios 7

使用

someValue + (x>0? 1: 0);
Run Code Online (Sandbox Code Playgroud)

但是不要担心写一点来得到你需要的东西.编写可理解的代码很重要:)