C# 索引超出了数组的边界。如何解决这个问题?
我的文件看起来像那样 我在控制台中得到了这个错误 为什么不显示Almeda Norkute 25.70?而不是C# 索引超出了数组的边界。如何解决这个问题?,c#,.net,C#,.net,我的文件看起来像那样 我在控制台中得到了这个错误 为什么不显示Almeda Norkute 25.70?而不是 using System; using System.IO; namespace _2._1 { class Program { public struct nariai { public string vardas; public string pavarde; public double pinigai; }
using System;
using System.IO;
namespace _2._1
{
class Program
{
public struct nariai
{
public string vardas;
public string pavarde;
public double pinigai;
};
static void Main(string[] args)
{
StreamReader failas = new StreamReader("nariai.txt");
string a = failas.ReadLine();
int nariuKiekis = int.Parse(a);
nariai[] narys = new nariai[nariuKiekis];
string[] info = new string[nariuKiekis];
for (int i = 0; i < nariuKiekis; i++)
{
info[i] = failas.ReadLine();
string[] informacija = info[i].Split(' ');
narys[i].vardas = informacija[i];
narys[i].pavarde = informacija[i + 1];
narys[i].pinigai = double.Parse(informacija[i + 2]);
Console.WriteLine("{0} {1} {2}", narys[0].vardas, narys[0].pavarde, narys[0].pinigai);
}
}
}
}
写
您的informacija包含一行,在您的示例中,一行始终包含3项。如果您需要我访问这些,您会得到错误,因为您试图访问不存在的位置
和使用
narys[i].vardas = informacija[0];
narys[i].pavarde = informacija[1];
narys[i].pinigai = double.Parse(informacija[2]);
否则,您将始终在控制台中写入第一条记录 使用informacija[0]、informacija[1]和informacija[1+2]分别代替informacija[i]、informacija[1]和informacija[2] 并在console.writeline语句中使用索引i
Console.WriteLine("{0} {1} {2}", narys[i].vardas, narys[i].pavarde, narys[i].pinigai);
您能否将文件内容和错误描述添加到问题中,以便在问题得到解决并且您添加的链接将被破坏时保留?为什么您要将i与informacija一起使用?如果您遇到此消息,请逐行检查代码,其中说明发生错误,并检查索引的值。然后想想他们为什么会有这样的值。然后我明白了,他们真的应该检查确保informacija的长度也为3。我需要:Lukas Velicka 20.50 Almeda Norkute 25.70看看我的编辑。您在“Console.WriteLine”调用中使用了错误的索引。@Fildor 15分钟,据我所知
Console.WriteLine("{0} {1} {2}", narys[i].vardas, narys[i].pavarde, narys[i].pinigai);
for (int i = 0; i < nariuKiekis; i++)
{
info[i] = failas.ReadLine();
string[] informacija = info[i].Split(' ');
narys[i].vardas = informacija[0];
narys[i].pavarde = informacija[1];
narys[i].pinigai = double.Parse(informacija[2]);
Console.WriteLine("{0} {1} {2}", narys[i].vardas, narys[i].pavarde, narys[i].pinigai);
}