2017-09-18 88 views
0

我有非常简单的要求。目前在我的程序中,我正在做这样的事情。任何替代给予if-else语句

int low=getLowValue(); 

if(low==20) 
    low=15; 
else 
    low=(low/5)*5; // here '/' is for integer division 

有没有简单的方法可以做到这一点?任何符合上述条件的行语句(不是三元运算符)。 在此先感谢。

+2

你意识到'(low/5)* 5'基本上是'low'。 –

+4

不适用于低= 13它会变成10 – yajiv

+0

低== 20?低= 15:低=(低/ 5)* 5; –

回答

-3

给出的代码片段写入以下Java语法来解决所需的问题。

low = (low==20)?15:low; 
2

实际上,三元操作通常是这类事情的理想选择。

但是,因为你的国家,你不希望出现这种情况,你也可以做到这一点在“一” (一)行通过提供自己的功能做繁重:

int GetLowValueWithPreCheck(int checkFrom, int checkTo) { 
    int val = getLowValue(); 
    if (val == checkFrom) return checkTo; 
    return (val/5) * 5; 
} 

int low = getLowValueWithPreCheck(20, 15); 

(a)因为它引用了一个在调用点的行 - 如果您要在许多地方执行操作并希望将代码混乱最小化,通常这是一件好事。

+1

Upvote只是为了'''三元操作对于这类事情'''是理想的。 – sascha

0

你的代码是可读的,我不会改变它。但是,如果你真的想,你可以这样做(在C++中至少):

low = (low - (low == 20))/5 * 5; 

如果low == 20这导致(20 - 1)/5 * 5计算结果为15。 如果low != 20这会导致low/5 * 5

+0

'low - (low == 20)'不能用严格打字的语言工作。 – bfontaine