Math 给定if-else语句的任何替代项

Math 给定if-else语句的任何替代项,math,Math,我有一个非常简单的要求。目前在我的项目中,我正在做类似的事情 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 low=getLowValue();

if(low==20)
   low=15;
else
   low=(low/5)*5;  // here '/' is for integer division
有什么简单的方法可以做到这一点吗?满足上述条件的任何一行语句(非三元运算符)。
提前谢谢

给定的代码片段是按照Java语法编写的,以解决所需的问题

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

实际上,三元运算通常是这类事情的理想选择

但是,既然你声明你不想这样做,你也可以在“一”(a)行中通过提供你自己的功能来完成重载:

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

int low = getLowValueWithPreCheck(20, 15);


(a) 引用,因为它在调用点引用了一行-如果您要在许多地方执行操作,并且希望尽量减少代码混乱,那么这通常是一件好事。

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

如果
low==20
这将导致
(20-1)/5*5
,其计算结果为
15

如果
low!=20
这会导致
低/5*5

您意识到
(低/5)*5
基本上是
低的
。对于低=13,它将变为10低==20?低=15:低=(低/5)*5;这意味着您使用的是一种使用
/
进行整数除法的语言,仅在这种情况下,
low
不一定是
(low/5)*5
。这是什么语言?仅对
进行Upvote三元运算非常适合这种情况
low-(low==20)
在严格键入的语言中不起作用。
low = (low - (low == 20)) / 5 * 5;