Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net “什么是”呢;属性字符是只读的;在Visual Basic中,如何修复它?_Vb.net_Visual Studio 2010 - Fatal编程技术网

Vb.net “什么是”呢;属性字符是只读的;在Visual Basic中,如何修复它?

Vb.net “什么是”呢;属性字符是只读的;在Visual Basic中,如何修复它?,vb.net,visual-studio-2010,Vb.net,Visual Studio 2010,我的目标是这样做:将文件中的数据读入数组,加载列表框,计算每个学生的平均成绩并确定字母分数,然后计算班级平均成绩: 我声明的变量(全局): Dim项目,期中,hw1,hw2,期末,计数,平均值为整数 Dim letterGrade, lastName, firstName As String Dim classAverage As Double 我的代码: Dim array1 As String()=新字符串(6){} Dim StreamReader 1作为StreamReader=Fi

我的目标是这样做:将文件中的数据读入数组,加载列表框,计算每个学生的平均成绩并确定字母分数,然后计算班级平均成绩:

我声明的变量(全局):

Dim项目,期中,hw1,hw2,期末,计数,平均值为整数

Dim letterGrade, lastName, firstName As String
Dim classAverage As Double

我的代码:

Dim array1 As String()=新字符串(6){}

Dim StreamReader 1作为StreamReader=File.OpenText(“grades.csv”)
计数=0
classAverage=0
执行时(streamreader1.Peek()-1)
array1=Strings.Split(streamreader1.ReadLine(),“,”,-1)
firstName(count)=数组1(0)
lastName(计数)=数组1(1)
lstNames.Items.Add(lastName(count)&“,”和firstName(count))
hw1(计数)=转换为字符串(数组1(2))
hw2(计数)=转换为字符串(数组1(3))
项目(计数)=转换为字符串(数组1(4))
中期(计数)=转换为字符串(数组1(5))
最终(计数)=转换为字符串(数组1(6))
平均数(计数)=Math.Round(Math.Truncate(
classAverage=(classAverage+((hw1(计数)+hw2(计数))+(2*项目(计数))+(4*(期中(计数)+期末(计数))/12))
Dim num1为整数=平均值(计数)
如果(num1>=93),则
字母等级(计数)=“A”
ElseIf(num1>=90)则
字母等级(计数)=“A-”
ElseIf(num1>=87)则
字母等级(计数)=“B+”
ElseIf(num1>=83)则
字母等级(计数)=“B”
ElseIf(num1>=80)则
字母等级(计数)=“B-”
ElseIf(num1>=77)则
字母等级(计数)=“C+”
ElseIf(num1>=73)则
字母等级(计数)=“C”
ElseIf(num1>=70)则
字母等级(计数)=“C-”
ElseIf(num1>=67)则
字母等级(计数)=“D+”
ElseIf(num1>=63)则
字母等级(计数)=“D”
ElseIf(num1>=60)则
字母等级(计数)=“D”
其他的
字母等级(计数)=“E”
如果结束
计数=(计数+1)
环
classAverage=(classAverage/计数)
lstNames.SelectedIndex=0
人口标签(0)
streamreader1.Close()

看起来
letterGrade
是一个
字符串
,而不是字符串数组。您需要将其正确地声明为数组

编辑后

我建议创建一个
Student
类,其中包含文本文件中的值。它还将包含针对对象本身执行的
CalculateAverage()
CalculateLetterGrade()
方法。然后将文本文件中的每一行转储到
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)

此时,您将有一个简单的学生集合,您可以在其中循环,计算您的班级平均成绩或您需要的任何其他内容。

看起来
字母等级
是一个
字符串,而不是一个字符串数组。您需要将其正确地声明为数组

编辑后

我建议创建一个
Student
类,其中包含文本文件中的值。它还将包含针对对象本身执行的
CalculateAverage()
CalculateLetterGrade()
方法。然后将文本文件中的每一行转储到
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)

此时,您将有一个简单的学生集合,您可以循环浏览他们,计算您的平均班级人数或您需要的任何其他信息。

我该怎么做?我是Visual Basic新手。首先,您需要编辑您的问题,以包括如何创建
letterGrade
。要创建一个空数组,最简单的方法是
Dim letterGrade(5)as String
获得一个包含6个元素(索引0到5)的数组。但由于您是从现有数据开始的,我猜您没有固定的数字可以放在那里。根据您的情况,还有其他几种创建数组的方法。我对您的代码有点困惑。你能帮我加一些东西吗?我该怎么做?我是Visual Basic新手。首先,您需要编辑您的问题,以包括如何创建
letterGrade
。要创建一个空数组,最简单的方法是
Dim letterGrade(5)as String
获得一个包含6个元素(索引0到5)的数组。但由于您是从现有数据开始的,我猜您没有固定的数字可以放在那里。根据您的情况,还有其他几种创建数组的方法。我对您的代码有点困惑。你能帮我加一些这东西吗。