[英]Error : Index out of bounds of array
string[] lines = System.IO.File.ReadAllLines(@"C:\Users\myname\Desktop\test.txt");
int cnt = lines.Count();
int arraynum1 = 0;
int arraynum2 = 1;
int arraynum3 = 2;
try
{
for (int x = 0; x < cnt; x++)
{
mc[0] = lines[arraynum1];
mc[1] = lines[arraynum2];
mc[2] = lines[arraynum3];
arraynum1 = arraynum3 + 1;
arraynum2 = arraynum3 + 1;
arraynum3 = arraynum3 + 1;
ListViewItem item = new ListViewItem(new[] { mc[0], mc[1], mc[2] });
listView1.Items.Add(item);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
每当我在for loop
使用变量cnt
指定要在哪一行停止时,都会收到此问题标题中列出的错误,但是每当我在循环中设置一个代替cnt
的integer
,它就可以正常工作。
不是吗
arraynum1 = arraynum1 + 1;
arraynum2 = arraynum2 + 1;
arraynum3 = arraynum3 + 1;
代替
arraynum1 = arraynum3 + 1;
arraynum2 = arraynum3 + 1;
arraynum3 = arraynum3 + 1;
尝试这个:
arraynum1 = arraynum1 + 1;
arraynum2 = arraynum2 + 1;
arraynum3 = arraynum3 + 1;
因为您当前在所有三种情况下都引用同一数组arraynum3。
arraynum1 = arraynum3 + 1;
arraynum2 = arraynum3 + 1;
arraynum3 = arraynum3 + 1;
假设您的文件包含6行,这将是您的mc [0] .. mc [2]将保存在for循环中的值:
迭代1(x = 0):
mc[0] = lines[0]
mc[1] = lines[1]
mc[2] = lines[2]
迭代2(x = 1):
mc[0] = lines[3]
mc[1] = lines[3]
mc[2] = lines[3]
迭代3(x = 2):
mc[0] = lines[4]
mc[1] = lines[4]
mc[2] = lines[4]
迭代4(x = 3):
mc[0] = lines[5]
mc[1] = lines[5]
mc[2] = lines[5]
迭代5(x = 4):
The exception you stated will be thrown here
mc[0] = lines[6]
mc[1] = lines[6]
mc[2] = lines[6]
迭代6(x = 5):永远不会达到
因此,与其将循环var x增加1,不如将其增加3,例如:
for (int x = 0; x+2 < cnt ; x+=3)
{
mc[0] = lines[x];
mc[1] = lines[x+1];
mc[2] = lines[x+2];
ListViewItem item = new ListViewItem(new[] { mc[0], mc[1], mc[2] });
listView1.Items.Add(item);
}
这种方法还将考虑文件中包含的行数不能被3除的可能性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.