Arrays VB逻辑问题所需的第二双眼睛
一切正常!除了计算结果4,2数组中第三列的FOR循环 界面设计: 循环将不会运行!每条线都在环路外工作,但我整个下午都在盯着这个 如果你能看到我做错了什么,我将不胜感激。我尝试了当indexArrays VB逻辑问题所需的第二双眼睛,arrays,vb.net,for-loop,basic,Arrays,Vb.net,For Loop,Basic,一切正常!除了计算结果4,2数组中第三列的FOR循环 界面设计: 循环将不会运行!每条线都在环路外工作,但我整个下午都在盯着这个 如果你能看到我做错了什么,我将不胜感激。我尝试了当index选项->项目和解决方案->VB默认设置中找到此设置。这将在运行时避免bug。我看到2个Do循环和2个For…Next循环。哪个循环不运行?我相信XMLReader需要调用Dispose,这可以通过使用块来实现。
Imports System.Xml
公共类计算器
Dim strStudentName As String
Dim strTaskName(4) As String
Dim dblTaskWeighting(4) As Double
Dim Results(4, 2) As Double
Dim intTaskQuantity As Integer
Dim dblWeightedResult As Double
Dim dblWeightedItem As Double
Dim strLetterGrade As String
Private Sub btnYear11_Click_1(sender As Object, e As EventArgs) Handles btnYear11.Click
Dim xr As XmlReader = XmlReader.Create("Year11.xml")
Do While xr.Read()
If xr.NodeType = XmlNodeType.Element AndAlso xr.Name = "Name" Then
lbxSelectedClass.Items.Add(xr.ReadElementString)
End If
Loop
End Sub
Private Sub btnYear10_Click(sender As Object, e As EventArgs) Handles btnYear10.Click
Dim xr As XmlReader = XmlReader.Create("Year10.xml")
Do While xr.Read()
If xr.NodeType = XmlNodeType.Element AndAlso xr.Name = "Name" Then
lbxSelectedClass.Items.Add(xr.ReadElementString)
End If
Loop
End Sub
Private Sub btnClearClass_Click(sender As Object, e As EventArgs)
lbxSelectedClass.Items.RemoveAt(lbxSelectedClass.SelectedIndex.ToString())
End Sub
Private Sub btnEnter_Click(sender As Object, e As EventArgs) Handles btnEnter.Click
strStudentName = lbxSelectedClass.SelectedItem
Dim intTaskQuantity As Integer = Val(InputBox("How many assessment tasks did " & strStudentName & " complete?"))
If intTaskQuantity = 4 Then
lblTask5.Visible = False
txtTask5Result.Visible = False
txtTask5Total.Visible = False
lblWeighting5.Visible = False
ElseIf intTaskQuantity = 3 Then
lblTask5.Visible = False
txtTask5Result.Visible = False
txtTask5Total.Visible = False
lblWeighting5.Visible = False
lblTask4.Visible = False
txtTask4Result.Visible = False
txtTask4Total.Visible = False
lblWeighting4.Visible = False
ElseIf intTaskQuantity = 2 Then
lblTask5.Visible = False
txtTask5Result.Visible = False
txtTask5Total.Visible = False
lblWeighting5.Visible = False
lblTask4.Visible = False
txtTask4Result.Visible = False
txtTask4Total.Visible = False
lblWeighting4.Visible = False
lblTask3.Visible = False
txtTask3Result.Visible = False
txtTask3Total.Visible = False
lblWeighting3.Visible = False
ElseIf intTaskQuantity = 2 Then
lblTask5.Visible = False
txtTask5Result.Visible = False
txtTask5Total.Visible = False
lblWeighting5.Visible = False
lblTask4.Visible = False
txtTask4Result.Visible = False
txtTask4Total.Visible = False
lblWeighting4.Visible = False
lblTask3.Visible = False
txtTask3Result.Visible = False
txtTask3Total.Visible = False
lblWeighting3.Visible = False
lblTask2.Visible = False
txtTask2Result.Visible = False
txtTask2Total.Visible = False
lblWeighting2.Visible = False
End If
For i = 0 To (intTaskQuantity - 1)
strTaskName(i) = InputBox("What the name of Task number " & i + 1 & " ?")
dblTaskWeighting(i) = Val(InputBox("What the weighting for that task?"))
lblTask1.Text = strTaskName(0)
lblTask2.Text = strTaskName(1)
lblTask3.Text = strTaskName(2)
lblTask4.Text = strTaskName(3)
lblTask5.Text = strTaskName(4)
lblWeighting1.Text = ((dblTaskWeighting(0) * 100) & " % ")
lblWeighting2.Text = ((dblTaskWeighting(1) * 100) & " % ")
lblWeighting3.Text = ((dblTaskWeighting(2) * 100) & " % ")
lblWeighting4.Text = ((dblTaskWeighting(3) * 100) & " % ")
lblWeighting5.Text = ((dblTaskWeighting(4) * 100) & " % ")
Next
End Sub
Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
Results(0, 0) = Val(txtTask1Result.Text)
Results(0, 1) = Val(txtTask1Total.Text)
Results(1, 0) = Val(txtTask2Result.Text)
Results(1, 1) = Val(txtTask2Total.Text)
Results(2, 0) = Val(txtTask3Result.Text)
Results(2, 1) = Val(txtTask3Total.Text)
Results(3, 0) = Val(txtTask4Result.Text)
Results(3, 1) = Val(txtTask4Total.Text)
Results(4, 0) = Val(txtTask5Result.Text)
Results(4, 1) = Val(txtTask5Total.Text)
For index As Integer = 0 To intTaskQuantity - 1
Results(index, 2) = ((Results(index, 0) / Results(index, 1)) * 100)
lbxResults.Items.Add(strTaskName(index) & " : " & Results(index, 2) & "%")
dblWeightedItem = (Results(index, 2) * dblTaskWeighting(index))
dblWeightedResult = dblWeightedResult + dblWeightedItem
Next
If dblWeightedResult > 85 Then
strLetterGrade = "A"
ElseIf dblWeightedResult <= 85 And dblWeightedResult > 75 Then
strLetterGrade = "B"
ElseIf dblWeightedResult <= 75 And dblWeightedResult > 45 Then
strLetterGrade = "C"
ElseIf dblWeightedResult <= 45 And dblWeightedResult > 45 Then
strLetterGrade = "D"
ElseIf dblWeightedResult <= 45 And dblWeightedResult > 35 Then
strLetterGrade = "E"
ElseIf dblWeightedResult < 35 Then
strLetterGrade = "F"
Else
strLetterGrade = "Not Graded"
End If
MsgBox(strStudentName & " has been awarded the final grade of " & strLetterGrade)
End Sub
最终类我同意@MikNiller和TZHX的回答:btnCalculate\u Click中的变量intTaskQuantity的值为0。您在BTenter\u Click方法中重新定义了intTaskQuantity,因此全局变量永远不会得到值,我猜,但在BTENTER_单击函数中,将值设置为intTaskQuantity时,请删除Dim和As Integer。我认为uou正在向方法声明一个局部变量,该方法屏蔽了类1,因此收集到的值在函数中无法生存。请打开选项Strict。您可以在工具菜单->选项->项目和解决方案->VB默认设置中找到此设置。这将在运行时避免bug。我看到2个Do循环和2个For…Next循环。哪个循环不运行?我相信XMLReader需要调用Dispose,这可以通过使用块来实现。