C# 为什么我的数组抛出超出范围的异常错误?
为什么下面的代码会引发异常C# 为什么我的数组抛出超出范围的异常错误?,c#,arrays,C#,Arrays,为什么下面的代码会引发异常 for (int i = 0; i <= Items.Length-1; i++) { Console.WriteLine(Items[i,1]); } 项目申报: 获取字符串数组的函数: static string[,] ReadFromFile(string filename, int rowsF) { StreamReader SR; string S; string[] S_split; SR = File.O
for (int i = 0; i <= Items.Length-1; i++)
{
Console.WriteLine(Items[i,1]);
}
项目申报:
获取字符串数组的函数:
static string[,] ReadFromFile(string filename, int rowsF)
{
StreamReader SR;
string S;
string[] S_split;
SR = File.OpenText(filename);
S = SR.ReadLine();
string[,] myItems = new String[rowsF, 2];
int row_number = 0;
while (S != null)
{
S_split = S.Split('"');
//temp_items[row_number,0] =
myItems[row_number,0] = S_split[1];
myItems[row_number,1] = S_split[2];
row_number++;
S = SR.ReadLine();
}
SR.Close();
return myItems;
}
string[,] Items = ReadFromFile(myFile, rowsF);
你有一个直的二维数组。Length为您提供了数组中的索引,但您使用它来计算单个维度的索引。你想要的是:
for (int i = 0; i < Items.GetLength(0); i++)
{
Console.WriteLine(Items[i,1]);
}
for(int i=0;i
您有一个直接的二维数组。Length为您提供了数组中的索引,但您使用它来计算单个维度的索引。你想要的是:
for (int i = 0; i < Items.GetLength(0); i++)
{
Console.WriteLine(Items[i,1]);
}
for(int i=0;i
检查项目的长度[i]。它看起来是一个2D数组,显然不是空的,因为你会得到一个不同的异常,所以它可能只是Items[i]处的一个空数组,或者只包含一个item
检查:
Items[i] == null
Items[i].Length > 0
编辑:您的附加代码有帮助。当您拆分字符串以初始化项时,对于给您带来麻烦的项,请检查索引1中存储的内容。除此之外,我看不出有什么问题。检查项目的长度[I]。它看起来是一个2D数组,显然不是空的,因为你会得到一个不同的异常,所以它可能只是Items[i]处的一个空数组,或者只包含一个item 检查:
Items[i] == null
Items[i].Length > 0
编辑:您的附加代码有帮助。当您拆分字符串以初始化项时,对于给您带来麻烦的项,请检查索引1中存储的内容。除此之外,我看不出它有什么问题。它引发了一个异常,因为
Items[I]。Length
是<2
在尝试访问
项[i,1]
之前,需要检查(项[i].Length>=2)
,因为项[i].Length
为<2,所以它会引发异常
在尝试访问
项[i,1]
之前,您需要检查(项[i].Length>=2)
,据我所见,其中一行很可能不符合您所需的格式。看起来您是在根据引号(“)定界检索文本,S_split[]可能并不总是有那么多字段
例如,文件末尾的空行将触发异常。据我所见,其中一行很可能不符合您所需的格式。看起来您是在根据引号(“)定界检索文本,而s_split[]可能并不总是具有这些字段数 例如,文件末尾的空行将触发异常 是否确实不希望使用S_分割[0]&S_分割[1] 应该看到输入文件 是否确实不希望使用S_分割[0]&S_分割[1]
应该可以看到输入文件。数组声明是什么样子的?你能包括项目声明吗?我在postline 119 is(Console.WriteLine)中添加了一些内容?如果足够短,我们能看到输入文件吗?数组声明是什么样子的?你能包括项的声明吗?我在postline 119 is(Console.WriteLine)中添加了一些东西?如果足够短,我们能看到输入文件吗?数组中有两列。数组中有两列。我真的不明白你在这里的意思。。什么“项目”?抱歉,是项目(您拥有的2d数组)第二维度足够大,是第一维度索引给出了异常。Items.GetLength(0)