这是我目前的代码:
for(int i = 1; i < 13; i + 4)
{
do something
}
for (int i = 2; i <13; i + 4)
{
do something
}
依此类推i。
我希望我的for循环执行以下操作而不必写出每个单独的值:
for(int i = 1; i < 13; i++)
{
if(i is 1,5,9)
{
do something
}
if(i is 2,6,10)
{
do something
}
例如,更改文本框文本。
谢谢。
答案 0 :(得分:3)
看看标准的共同点;他们都用4来模数相同的东西:
<person>@foo.com
另一种方法是在循环内增加:
for(int i = 1; i != 13; ++i)
{
switch(i % 4)
{
case 1:
// first do something
break;
case 2:
// second do something
break;
case 3:
// third do something
break;
case 0:
// fourth do something
break;
}
}
如果你不能保证一定数量的循环,这种方法需要更加谨慎(例如你在这里很好,但如果你在for(int i = 1; i != 13; ++i)
{
// first do something
++i;
// second do something
++i;
// third do something
++i;
// fourth do something
}
结束,你需要在循环中进行测试。)< / p>
答案 1 :(得分:2)
或许您正在寻找除法余数运算符%
以及switch
语句,如下所示。
for(int i = 1; i < 13; i++)
{
switch( i % 4 )
{
case 0:
do stuff;
break;
case 1:
do stuff;
break;
case 2:
do stuff;
break;
case 3:
do stuff;
break;
}
}
答案 2 :(得分:2)
您可以使用Contains
:
for(int i = 1; i < 13; i++)
{
if(new[]{1,5,9}.Contains(i))
{
// do something
}
if(new[]{2,6,10}.Contains(i))
{
// do something else
}
}
答案 3 :(得分:1)
这是一种简单的方法,不会让它更长......
for(int i = 1; i != 13; ++i)
{
if ((i - 1) % 4 == 0)
{
//i is 1, 5, 9, etc.
}
else if ((i - 2) % 4 == 0)
{
//i is 2, 6, 10
}
}
答案 4 :(得分:0)
我会做这样的事情:
int[] valuesForTheFirstIf = new int[] { 1, 5, 9 };
int[] valuesForTheSecondtIf = new int[] { 2, 6, 10 };
for (int i = 0; i < 13; i++)
{
if (valuesForTheFirstIf.Contains(i))
{
// do something
}
if (valuesForTheSecondtIf.Contains(i))
{
// do something
}
}