我循环遍历一系列字符串,例如(1/12/1992苹果卡车12/10/10橙色自行车)。数组的长度总是可以被3整除。我需要遍历数组并抓住前3个项目(我要将它们插入到数据库中),然后抓住接下来的3个,依此类推,直到所有他们已经完成了。
//iterate the array
for (int i = 0; i < theData.Length; i++)
{
//grab 3 items at a time and do db insert, continue until all items are gone. 'theData' will always be divisible by 3.
}
答案 0 :(得分:23)
每一步只需将i
增加3:
Debug.Assert((theData.Length % 3) == 0); // 'theData' will always be divisible by 3
for (int i = 0; i < theData.Length; i += 3)
{
//grab 3 items at a time and do db insert,
// continue until all items are gone..
string item1 = theData[i+0];
string item2 = theData[i+1];
string item3 = theData[i+2];
// use the items
}
要回答一些评论,theData.Length
是3的倍数,因此无需检查theData.Length-2
作为上限。这只会掩盖先决条件中的错误。
答案 1 :(得分:7)
i++
是循环的标准用法,但不是唯一的方法。每次尝试增加3:
for (int i = 0; i < theData.Length - 2; i+=3)
{
// use theData[i], theData[i+1], theData[i+2]
}
答案 2 :(得分:3)
不太难。只需将for
循环的计数器每次迭代增加3,然后将索引器偏移以一次获得3个批次:
for(int i=0; i < theData.Length; i+=3)
{
var item1 = theData[i];
var item2 = theData[i+1];
var item3 = theData[i+2];
}
如果数组的长度不是三的倍数,则需要用theData.Length - 2
检查上限。
答案 3 :(得分:2)
你的for循环不需要只添加一个。你可以循环三次。
for(int i = 0; i < theData.Length; i+=3)
{
string value1 = theData[i];
string value2 = theData[i+1];
string value3 = theData[i+2];
}
基本上,您只是使用索引来获取数组中的值。这里需要注意的一点是,我没有检查你是否超过阵列的末尾。确保你正在进行边界检查!
答案 4 :(得分:1)
这应该有效:
//iterate the array
for (int i = 0; i < theData.Length; i+=3)
{
//grab 3 items at a time and do db insert, continue until all items are gone. 'theData' will always be divisible by 3.
var a = theData[i];
var b = theData[i + 1];
var c = theData[i + 2];
}
我曾经一度为这个答案而投票。我很确定它与使用theData.Length作为上限有关。代码正常工作,因为问题表明数组保证是三的倍数。如果没有这个保证,你需要用data.Length - 2来检查上限。
答案 5 :(得分:1)
这是一个更通用的解决方案:
int increment = 3;
for(int i = 0; i < theData.Length; i += increment)
{
for(int j = 0; j < increment; j++)
{
if(i+j < theData.Length) {
//theData[i + j] for the current index
}
}
}
答案 6 :(得分:-1)
string[] friends = new string[4];
friends[0]= "ali";
friends[1]= "Mike";
friends[2]= "jan";
friends[3]= "hamid";
for (int i = 0; i < friends.Length; i++)
{
Console.WriteLine(friends[i]);
}Console.ReadLine();