我有min和max params:
var min = 30;
var max = 35;
var num = 33;
还有步进100毫秒的计时器。 在身体计时器上我有代码:
if (num < max)
{
// Step 1
num = num + step;
}
if (num >= max)
{
// Step 2
num = num - step;
}
if (num <= min)
{
num = num + step;
}
问题是如果num = 34.98
工作第1步(34.99 + 0,05),那么第2步。所以在这一步中我获得了无限循环。如果num > max
然后递减到min
,我该怎么做?
答案 0 :(得分:2)
嗯,你可以使用else if
代表第二个if
(和else
代表第三个代码)
所以你只能在每个循环中输入一个条件。
然后您可以将代码简化为此(假设min&lt; max,or子句的右侧部分可以删除)
if (num < max || num <= min) //remove num <= min and throw an exception if max < min could be also done...
num += step;
else
num -= step;
也可以是(如果min&lt; max)
num = num < max
? num + step
: num - step;
答案 1 :(得分:1)
您可以使用此一行代码:
num += num >= max || num <= min? (step = step*-1) : step;
示例:
static void Main(string[] args)
{
var min = 31;
var max = 33;
double num = 32;
double step = 0.10;
while (true)
{
Console.Clear();
num += num >= max || num <= min? (step = step * -1) : step;
Console.Write(num);
Thread.Sleep(200);
}
}
输出:LINK
答案 2 :(得分:0)
不使用if
,而是使用else if
和else
if (num < max)
num = num + step;
else if (num >= max)
num = num - step;
else
num = num + step;
然后删除还原剂if
(请注意,num < max || num <= min
等于num < max
)
if (num < max)
num = num + step;
else if (num >= max)
num = num - step;
可以缩短为num += num < max ? step : step * -1;
答案 3 :(得分:0)
我做过这样的事情:
if ((num + step) <= max && flag_d == 0)
{
num = num + step;
}
else {
if (num <= min) {
flag_d = 0;
}
flag_d = 1;
num = num - step;
}