我正在尝试将文本文件中的 x 和 y 值读取到字符串数组中,其中行在 ',' 上被拆分但是,当我运行此代码时,我收到一个错误,指出索引超出了范围第一个元素上的数组。我尝试使用临时字符串来存储数据,然后对其进行转换,但我仍然在第二个元素上遇到相同的错误。这是我在没有临时字符串的情况下实现的代码。
string line;
while ((line = coordStream.ReadLine()) != null)
{
string[] temp = new string[2];
temp[0] = "";
temp[1] = "";
temp = line.Split(',');
trees[count].X = Convert.ToInt16(temp[0]);
trees[count].Y = Convert.ToInt16(temp[1]);
count++;
}
这里也是临时存储的代码:
string line;
while ((line = coordStream.ReadLine()) != null)
{
string[] temp = new string[2];
temp[0] = "";
temp[1] = "";
temp = line.Split(',');
string xCoord = temp[0];
string yCoord = temp[1];
trees[count].X = Convert.ToInt16(xCoord);
trees[count].Y = Convert.ToInt16(yCoord);
count++;
}
我知道这似乎是一个微不足道的错误,但我似乎无法让它发挥作用。如果我手动调试和单步调试数组,它可以工作,但是当我不单步调试时(即让程序运行),这些错误会被抛出
编辑:前10行数据如下:
654,603
640,583
587,672
627,677
613,711
612,717
584,715
573,662
568,662
564,687
文本文件中没有空行。
正如 Jon Skeet 所指出的,删除临时分配似乎已经修复了这个错误。然而,即使有任务,它应该仍然有效。while 循环内的以下代码示例有效:
string[] temp;
temp = line.Split(',');
trees[count].X = Convert.ToInt16(temp[0]);
trees[count].Y = Convert.ToInt16(temp[1]);
count++;
树木的数量是已知的,但我要感谢大家的投入。预计在不久的将来会有更多问题:D