【问题标题】:Make For Loop Stop Counting Every 5 iterations C#使 For 循环停止计数每 5 次迭代 C#
【发布时间】:2016-02-23 21:56:48
【问题描述】:

我正在使用 WinForms。在我的表单中,我有一个按钮。每次点击按钮,程序都会计算数字。我正在使用 for 循环来计算 1-500 之间的数字。如何让我的 for 循环每 5 个计数停止一次?

我下面的代码数到 5 然后停止。那不是我想要循环做的事情。循环应该记住它之前剩下的数字,然后从那里开始计数,下面是一个例子。

For 循环计算示例: 单击:1 2 3 4 5 (停止) 您再次单击按钮: 6 7 8 9 10 (停止) 你再次点击按钮: 11 12 13 14 15...等

        for(int i = 0; i <= 500 ; i++)
        {
            Debug.Print("Value of i: " + i.ToString());               
            if(i == 5)
            {
                break;
            }                         
        }

【问题讨论】:

  • 继续呢?!而不是休息
  • @CarbineCoder 那么if 语句就没有用了

标签: c# .net winforms loops for-loop


【解决方案1】:

将当前计数存储在类的成员变量中,并以此重新初始化循环中的计数器。

//In your class a private member:
private int masterCounter = 1;

//In your function  
for(int i = (masterCounter >= 500 ? 1 : masterCounter); i <= 500 ; i++)
{
    Debug.Print("Value of i: " + i.ToString());               
    if(i % 5 == 0)
    {
        masterCounter = i + 1;
        break;
    }                         
}

一旦您达到 500 并再次单击该按钮,上述代码将重置为 1。所以你可以在 500 处重新启动它。(masterCounter &gt;= 500 ? 1 : masterCounter) 的部分会这样做,因为如果 masterCounter 大于或等于 500,它会返回 1,否则它是当前计数,它作为起始值分配给 i

另一个有趣的部分是if(i % 5 == 0),只有当 i 是 5 的倍数时它才会评估为真,因为 % 计算整数除法的余数。

【讨论】:

  • 每次我点击它说的按钮。 i 的值:0。这不是我的想法。
  • 你在哪里设置masterCounter?如果你用与循环相同的方法设置它,它每次都会重置为 0
  • 私有 int masterCounter 在我的按钮点击事件上方。
  • 正如@BlueBoy 提到的private int masterCounter = 0; 行必须作为成员变量进入类,而不是在函数内部。否则,它会在每次单击按钮时归零。
  • 再次编辑,所以现在一切都是基于 1 的。而不是 0。抱歉,我没有准确阅读您的描述,您想以 1 而不是 0 开头。
【解决方案2】:

您需要将变量转换为私有成员

int i = 0;

那么您的代码将是:

    for(; i <= 500 ; i++)
    {
        Debug.Print("Value of i: " + i.ToString());               
        if(i % 5 == 0)
        {
            break;
        }                         
    }

不要忘记添加逻辑来“重置”变量 i,我建议使用更好的名称

【讨论】:

    【解决方案3】:

    你可以使用另一个变量:

    private int num = 0; 
    //Set this at the top of the class, not in the same function as the loop
    

    然后用它来记住每次点击按钮:

    for(int i = num; i <= 500 ; i++)
    {
        Debug.Print("Value of i: " + i.ToString());           
        if(i == num+5)
        {
            num+=5;
            break;
        }                         
    }
    

    【讨论】:

      猜你喜欢
      • 2017-02-09
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多