我有非常简单的要求。目前在我的程序中,我正在做这样的事情。任何替代给予if-else语句
int low=getLowValue();
if(low==20)
low=15;
else
low=(low/5)*5; // here '/' is for integer division
有没有简单的方法可以做到这一点?任何符合上述条件的行语句(不是三元运算符)。 在此先感谢。
我有非常简单的要求。目前在我的程序中,我正在做这样的事情。任何替代给予if-else语句
int low=getLowValue();
if(low==20)
low=15;
else
low=(low/5)*5; // here '/' is for integer division
有没有简单的方法可以做到这一点?任何符合上述条件的行语句(不是三元运算符)。 在此先感谢。
给出的代码片段写入以下Java语法来解决所需的问题。
low = (low==20)?15:low;
实际上,三元操作通常是这类事情的理想选择。
但是,因为你的国家,你不希望出现这种情况,你也可以做到这一点在“一” (一)行通过提供自己的功能做繁重:
int GetLowValueWithPreCheck(int checkFrom, int checkTo) {
int val = getLowValue();
if (val == checkFrom) return checkTo;
return (val/5) * 5;
}
int low = getLowValueWithPreCheck(20, 15);
(a)因为它引用了一个在调用点的行 - 如果您要在许多地方执行操作并希望将代码混乱最小化,通常这是一件好事。
Upvote只是为了'''三元操作对于这类事情'''是理想的。 – sascha
你的代码是可读的,我不会改变它。但是,如果你真的想,你可以这样做(在C++中至少):
low = (low - (low == 20))/5 * 5;
如果low == 20
这导致(20 - 1)/5 * 5
计算结果为15
。 如果low != 20
这会导致low/5 * 5
。
'low - (low == 20)'不能用严格打字的语言工作。 – bfontaine
你意识到'(low/5)* 5'基本上是'low'。 –
不适用于低= 13它会变成10 – yajiv
低== 20?低= 15:低=(低/ 5)* 5; –