C# 索引超出了数组的边界。如何解决这个问题?

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; }

我的文件看起来像那样

我在控制台中得到了这个错误

为什么不显示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;
    };
    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);
            }