use*_*629 0 vb.net visual-studio-2010
我的目标是这样做:将文件中的数据读入数组,加载列表框,计算每个学生的平均值并确定字母等级,并计算课程平均值:
我声明的变量(全局):
昏暗项目,midterm,hw1,hw2,final,count,average As Integer
Dim letterGrade, lastName, firstName As String
Dim classAverage As Double
Run Code Online (Sandbox Code Playgroud)
我的代码:
Dim array1 As String()= New String(6){}
Dim streamreader1 As StreamReader = File.OpenText("grades.csv")
count = 0
classAverage = 0
Do While (streamreader1.Peek() <> -1)
array1 = Strings.Split(streamreader1.ReadLine(), ",", -1)
firstName(count) = array1(0)
lastName(count) = array1(1)
lstNames.Items.Add(lastName(count) & ", " & firstName(count))
hw1(count) = Convert.ToString(array1(2))
hw2(count) = Convert.ToString(array1(3))
project(count) = Convert.ToString(array1(4))
midterm(count) = Convert.ToString(array1(5))
final(count) = Convert.ToString(array1(6))
average(count) = Math.Round(Math.Truncate((((((hw1(count) + hw2(count)) + (2 * project(count))) + (4 * (midterm(count) + final(count)))) / 12) + 0.5)))
classAverage = (classAverage + ((((hw1(count) + hw2(count)) + (2 * project(count))) + (4 * (midterm(count) + final(count)))) / 12))
Dim num1 As Integer = average(count)
If (num1 >= 93) Then
letterGrade(count) = "A"
ElseIf (num1 >= 90) Then
letterGrade(count) = "A-"
ElseIf (num1 >= 87) Then
letterGrade(count) = "B+"
ElseIf (num1 >= 83) Then
letterGrade(count) = "B"
ElseIf (num1 >= 80) Then
letterGrade(count) = "B-"
ElseIf (num1 >= 77) Then
letterGrade(count) = "C+"
ElseIf (num1 >= 73) Then
letterGrade(count) = "C"
ElseIf (num1 >= 70) Then
letterGrade(count) = "C-"
ElseIf (num1 >= 67) Then
letterGrade(count) = "D+"
ElseIf (num1 >= 63) Then
letterGrade(count) = "D"
ElseIf (num1 >= 60) Then
letterGrade(count) = "D"
Else
letterGrade(count) = "E"
End If
count = (count + 1)
Loop
classAverage = (classAverage / count)
lstNames.SelectedIndex = 0
PopulateLabels(0)
streamreader1.Close()
Run Code Online (Sandbox Code Playgroud)
看起来像是letterGrade一个String字符串数组.您需要将其正确声明为数组.
编辑完成后......
我建议创建一个Student包含文本文件中的值的类.它还包含针对对象本身执行CalculateAverage()和CalculateLetterGrade()执行的方法.然后将每行从文本文件转储到一个Student对象中,并添加到一个List(Of Student).获得此列表后,您可以遍历一个很好的简单对象列表来计算类平均值.
像这样的东西:
Public Class Student
Public FirstName As String
Public LastName As String
Public Project As Integer
...
Public Final As Integer
Public Function CalculateAverage() As Integer
... ' Your calculation function
End Function
Public Function CalculateLetterGrade() As String
... ' Your calculation function
End Function
End Class
Dim students As New List(Of Student)
'Inside your loop:
Dim student As New Student()
student.Project = Convert.ToString(array1(4))
... ' etc.
students.Add(student)
Run Code Online (Sandbox Code Playgroud)
此时,您将拥有一个简单的学生集合,您可以循环浏览它们,计算您的课程平均值或您需要的任何其他内容.
| 归档时间: |
|
| 查看次数: |
2397 次 |
| 最近记录: |