C#在数组中循环
我在一系列字符串中循环,例如(1/12/1992苹果卡车12/10/10橙色自行车)。数组的长度总是可以被3整除。我需要在数组中循环并获取前3项(我将把它们插入数据库),然后获取下3项,依此类推,直到所有项都已完成C#在数组中循环,c#,arrays,loops,C#,Arrays,Loops,我在一系列字符串中循环,例如(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
//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.
}
//迭代数组
for(int i=0;i
i++
是循环的标准用法,但不是唯一的方法。尝试每次递增3:
for (int i = 0; i < theData.Length - 2; i+=3)
{
// use theData[i], theData[i+1], theData[i+2]
}
for(int i=0;i
只需在每个步骤中将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
}
Debug.Assert((theData.Length%3)=0);//“数据”总是可以被3整除
对于(int i=0;i
为了回答一些评论,假设
数据.Length
是3的倍数,因此不需要检查数据.Length-2
作为上限。这只会掩盖前提条件中的错误。不太难。每次迭代只需将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];
}
for(int i=0;i
如果数组的长度不是三的倍数,则需要使用data.length-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];
}
for(int i=0;i
基本上,您只是使用索引来获取数组中的值。这里需要注意的一点是,我不是在检查是否经过数组的末尾。确保您正在进行边界检查 这应该有效:
//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];
}
//迭代数组
对于(int i=0;i
我曾经被否决过这个答案。我很确定这与使用数据有关。上界的长度。代码按原样运行很好,因为问题指出,数组保证是三的倍数。如果此保证不到位,则需要使用data.Length-2检查上限 这里有一个更通用的解决方案:
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
}
}
}
int增量=3;
对于(int i=0;i
string[]friends=新字符串[4];
朋友[0]=“阿里”;
朋友[1]=“迈克”;
朋友[2]=“简”;
朋友[3]=“哈米德”;
for(int i=0;i
5个答案在40秒内提交,所有答案的信息都相同(几乎完全相同)。哈哈。很好。我发现有趣的是,当我写我的答案时,有五个答案被贴了出来。。。没有一个人能正确地确定上边界。正如@Mahesh所说:你没有问任何问题。问题通常以问号(?)结尾。你没有描述你尝试了什么,失败了什么,以及为什么你遇到困难。有人会对否决票感到高兴吗?@Matt-在每次迭代中(当递增3时),数据[i]
应该是你的日期,数据[i+1]
应该是你的水果类型,数据[i+2]
应该是你的汽车。有什么问题吗?到目前为止,你是唯一一个在最后一次迭代中不会出现越界错误的人;相反,您只需短停一次迭代。试试i
@mmyers-伟人所见略同。:)已经改变了。但我不认为检查是必要的,只是把它放进去,因为它似乎是合乎逻辑的…问题是长度将是3的倍数,不需要检查-2@Henk:你是对的;如果我否决了你,我会收回它。不过,我想提醒大家注意你答案中的这一点。有没有理由投反对票。。。?似乎这篇文章的每一个答案都得到了否决票。否决票?为何(我注意到除了第一个答案外,所有的答案都被否决了。糟糕。)第一个原本是,但似乎已经被取消了。奇怪。这个问题已经包含了多个答案和一个可接受的答案。你能解释一下(通过编辑你的答案)你的答案与其他答案的不同之处吗?还要知道,从长远来看,只有代码的答案是没有用的。
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();