Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#在数组中循环_C#_Arrays_Loops - Fatal编程技术网

C#在数组中循环

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

我在一系列字符串中循环,例如(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.
}
//迭代数组
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();