0

この C# メソッドが IndexOutOfBounds 例外をスローする原因を教えてください。それは大歓迎です。

    public bool PopulateStudents(string path)   //decided to return bool if successful reading file.
    {
        theStudentList = new List<Student>(); //create instance..
        string text = null;
        FileInfo source = new FileInfo(@path);
        bool success = true;
        try
        {
            StreamReader r = source.OpenText();
            text = r.ReadLine();
            string[] splitText = new string[23];
            Student currentStudent = new Student();
            while (text != null)
            {
                splitText = text.Split(',');
                currentStudent = new Student(splitText[0], splitText[1], splitText[2]);
                for (int i = 0; i < 20; i += 2)
                {
                    currentStudent.EnterGrade(int.Parse(splitText[i + 3]), int.Parse(splitText[i + 4]));
                }
                currentStudent.CalGrade();
                theStudentList.Add(currentStudent);
                text = r.ReadLine();
            }
            r.Close();
        }
        catch (Exception exc)
        {
            success = false;
            Console.WriteLine(exc.Message);
        }

        return success;

    }

サンプル入力ファイル:

0199911,Bill,Gates,27,30,56,60,0,30,83,100,57,60,0,30,59,60,0,30,59,60,88,100
0199912,Steve,Jobs,30,30,55,60,25,30,70,100,55,60,25,30,50,60,0,30,58,60,80,100
0199913,Marc,Andresen,30,30,55,60,25,30,70,100,55,60,25,30,50,60,0,30,58,60,80,100
0199914,Larry,Ellisen,30,30,55,60,25,30,70,100,55,60,25,30,50,60,0,30,58,60,80,100

編集:あなたの答えはすべて素晴らしく、高く評価されていますが、結局のところ、テキストファイルの最後に空の空白スペースがありました. 最後に空白を残しておくと、あなたが提供した回答でこの問題が解決することを指摘したいと思います. :)

4

3 に答える 3