System.IndexOutOfRangeException: виртуальная студия - PullRequest
0 голосов
/ 08 ноября 2018

Я начну с этого, да, это домашнее задание, нет, я не хочу, чтобы вы делали это для меня, я просто пытаюсь понять, почему я получаю эту ошибку. Уже поздно, и я, скорее всего, получу ноль, но меня это не беспокоит. If lstGrades(J) = Grade(I) Then где я получаю ошибку. Я не получаю его, пока не запущу программу и не нажму кнопку Дисплей. То, что он должен сделать, это перечислить всех учеников с выбранной оценкой, а затем перечислить количество учеников с этой оценкой. Обычно я просто беру 0 (это будет первым в этом классе), но мне это кажется правильным, и это буквально досаждает мне до бесконечности, чтобы не найти проблему.

' Name:         Professor Juarez Project
' Purpose:      Display the names and number of students earning a specific grade.
' Programmer:   <Chuck Lloyd> on <11/03/18>

Option Explicit On
Option Strict On
Option Infer Off

Public Class frmMain
    Private Sub frmMain_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        'fill the lstGrades
        lstGrades.Items.Add("A")
        lstGrades.Items.Add("B")
        lstGrades.Items.Add("C")
        lstGrades.Items.Add("D")
        lstGrades.Items.Add("F")
        'the first grade in the list box is selected by default
        lstGrades.SelectedIndex = 0
    End Sub
    Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
        Me.Close()
    End Sub

    Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click
        ' Display the names and number of students earning a specific grade.
        Dim count As Integer = 0
        Dim counter As Integer = 0
        Dim lstNames() As String = {"Helen", "Peter", "Yolanda", "Carl", "Jennifer", "Charles", "Addison", "Aiden", "Treyson", "Sydney", "Jacob", "Nancy", "George", "Ursula", "Jack"}
        Dim lstGrades() As String = {"A", "B", "B", "A", "D", "F", "A", "B", "A", "B", "F", "C", "C", "B", "D"}
        Dim Grade_by_Name(5, 15) As String 'multi-dimensional array sized for 5 letter grades by 15 students
        ' this allows for the possibility that all students could get one grade


        Dim Grade() As String = {"A", "B", "C", "D", "F"}
        Dim I As Integer
        Dim J As Integer


        For I = 0 To 5
            count = 0
            For J = 0 To 15
                If lstGrades(J) = Grade(I) Then 'this is where the error is
                    Grade_by_Name(I, count) = lstNames(J)
                    count = count + 1
                End If

            Next
        Next

        Dim selectedGrade As String = lstGrades.ToString
        counter = 0

        If (lstGrades(I) = selectedGrade) Then
            counter = counter + 1

        End If

        'display the count
        lblNumber.Text = count.ToString


    End Sub
    Private Sub lstGrades_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles lstGrades.SelectedIndexChanged
        'Clear the student list box and count label
        lstNames.Items.Clear()
        lblNumber.Text = "Number of Students: "
    End Sub

    Private Sub ExitToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExitToolStripMenuItem.Click
        Me.Close()

    End Sub

End Class
...