指数数组的边界之外.如何解决这个问题呢?

Luk*_*čka 0 .net c#

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);
        }
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我的文件看起来像那样. 文件

我在控制台中收到此错误. 安慰

为什么它没有显示"Almeda Norkute 25.70"?

Mig*_*oom 8

代替

narys[i].vardas = informacija[i];
narys[i].pavarde = informacija[i + 1];
narys[i].pinigai = double.Parse(informacija[i + 2]);
Run Code Online (Sandbox Code Playgroud)

narys[i].vardas = informacija[0];
narys[i].pavarde = informacija[1];
narys[i].pinigai = double.Parse(informacija[2]);
Run Code Online (Sandbox Code Playgroud)

informacija的示例中包含一行和一行总共有3个项目.如果您需要我访问这些,您会收到错误,因为您正在尝试访问不存在的位置.

并使用

Console.WriteLine("{0} {1} {2}", narys[i].vardas, narys[i].pavarde, narys[i].pinigai);
Run Code Online (Sandbox Code Playgroud)

否则你总是在控制台写第一条记录;)

  • 他们真的应该检查以确保`informacija`的长度为3. (2认同)