如何在c#中停止While循环

时间:2014-05-25 16:58:18

标签: c# winforms

我有一个具有不同值的数组。一个名为saveforRR的数组,这应该像每当我有任何小于0的值一样工作,它将被从数组中删除。此外,数组中的值必须减少1.我不知道要使我的数组长度= 0需要多少次迭代。所以我用while循环。但是,当我运行代码时,我的循环在此行中停止 fortheaddingvalue =(int)saveforRR [w]; //它告诉她我的阵列是从边界出来的,我不知道怎么做?我该如何解决这个问题?你能告诉我吗?

//Create variables and set up the arrays 

int value = 7;
int []  saveforRR = {1,2,3,4,5,15,86};

//start get the values reduced 
int fortheaddingvalue;
int w = 0;

//Run the while loop to  reduce the value in the saveforRR array.                   
while(saveforRRName.Length !=0 && saveforRR.Length !=0)
{                   
    fortheaddingvalue = (int)saveforRR[w]; //It says her that  my array is out from boundaries, which i do not know how? 
    fortheaddingvalue = fortheaddingvalue - 1;

    if (fortheaddingvalue > 0)
    {                        
       saveforRR[w] = fortheaddingvalue;
       txtOutput.Text += "\r\n" +saveforRR[w] + "  this is the value";                     
    }
    else
    {
       Array.Clear(saveforRR, w, 1);           
       txtOutput.Text += "\r\n" + saveforRR[w] + "this is the value Remover";             
    }
    w++;
}

2 个答案:

答案 0 :(得分:3)

数组的长度永远不会为零。 Clear方法无法从数组中删除项目。

无法调整数组的大小。您可以使用Resize方法获得相同的效果,因为这将创建具有不同大小的新数组,并将项目复制到它。但是效率不高,您应该使用List<int>,因为它支持实际调整大小。

答案 1 :(得分:0)

似乎没有人提到 break - 陈述。你可以使用它打破任何循环:

while(true)
{
   // Eternal loop here...

   // Break out
   break;
}

在此处详细了解:break

退出循环的其他方法包括例如goto,返回或设置循环表达式不匹配