减少和增加价值?

时间:2015-08-18 09:57:24

标签: c#

我有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,我该怎么做?

4 个答案:

答案 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 ifelse

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;
            }