I am writing a program that takes names of students and their grades and calculates each student's average. I will then output the data to a file. Ignore the incorrect totals. I fixed that problem. I can't get the last average to display and I have no idea why. I've worked back through my code at least 5 or 6 times one line at a time and cannot see my error.
![Posted Image]()
Here's my code:
Sorry, I forgot to Edit the title and now I don't know how. I'd delete and remake it, but alas I don't know how to do that either.

Here's my code:
Public Class Form1
'constant
Const MAX_SCORES As Integer = 4
Const MAX_STUDENTS As Integer = 5
Structure Student
Dim strName As String
Dim dblScores() As Double
Dim dblTotal As Double
Dim dblAverage As Double
End Structure
Private Sub btnCalculate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculate.Click
'counter
Dim i As Integer = 0
Dim j As Integer = 0
'instantiate structure
Dim student(MAX_STUDENTS) As Student
'declare array size in structure
For i = 0 To MAX_STUDENTS
ReDim student(i).dblScores(MAX_SCORES)
Next
'------------------------------------------------------------------------------------------
'--------------------------------------initialize data-------------------------------------
'------------------------------------------------------------------------------------------
'initialize scores to 0
For i = 0 To MAX_STUDENTS
For j = 0 To MAX_SCORES
student(i).dblScores(j) = 0
Next
Next
'initialize averages to 0
For i = 0 To MAX_STUDENTS
student(i).dblAverage = 0
Next
'initialize totals to 0
For i = 0 To MAX_STUDENTS
student(i).dblTotal = 0
Next
'------------------------------------------------------------------------------------------
'-----------------------------------create textbox arrays----------------------------------
'------------------------------------------------------------------------------------------
'create textbox array for names
Dim txtNames() As TextBox = {txtName1, txtName2, txtName3, txtName4, txtName5, txtName6}
'create textbox array for scores
Dim txtScores(,) As TextBox = {{txtScores1_1, txtScores1_2, txtScores1_3, txtScores1_4, txtScores1_5},
{txtScores2_1, txtScores2_2, txtScores2_3, txtScores2_4, txtScores2_5},
{txtScores3_1, txtScores3_2, txtScores3_3, txtScores3_4, txtScores3_5},
{txtScores4_1, txtScores4_2, txtScores4_3, txtScores4_4, txtScores4_5},
{txtScores5_1, txtScores5_2, txtScores5_3, txtScores5_4, txtScores5_5},
{txtScores6_1, txtScores6_2, txtScores6_3, txtScores6_4, txtScores6_5}}
'create textbox array for averages
Dim lblAverages() As Label = {lblAvg1, lblAvg2, lblAvg3, lblAvg3, lblAvg4, lblAvg5, lblAvg6}
'------------------------------------------------------------------------------------------
'---------------------------------send data into structure---------------------------------
'------------------------------------------------------------------------------------------
'send names
For i = 0 To MAX_STUDENTS
student(i).strName = txtNames(i).Text.ToString()
Next
'send scores
For i = 0 To MAX_STUDENTS
For j = 0 To MAX_SCORES
student(i).dblScores(j) = CDbl(txtScores(i, j).Text.ToString())
Next
Next
'calculate averages and send to structure
For i = 0 To MAX_STUDENTS
For j = 0 To MAX_SCORES
'total grades
student(i).dblTotal = student(i).dblTotal + student(i).dblScores(j)
Next
'get average
student(i).dblAverage = student(i).dblTotal / (MAX_SCORES + 1)
Next
'------------------------------------------------------------------------------------------
'-------------------------------------display averages-------------------------------------
'------------------------------------------------------------------------------------------
For i = 0 To MAX_STUDENTS
lblAverages(i).Text = student(i).dblAverage.ToString()
Next
End Sub
End Class
Sorry, I forgot to Edit the title and now I don't know how. I'd delete and remake it, but alas I don't know how to do that either.