【发布时间】:2018-08-07 18:20:25
【问题描述】:
我正在尝试编写一个简单的 GPA 计算器,用户可以在其中输入组合框(A、B、C、D、F)和课程学分中项目的成绩,计算将输出到一个文本框。但是,我一直在文本框中得到一个 NaN 结果,我一生都无法理解为什么。我只有一点编程经验,如果有任何帮助,我将不胜感激!
Public Class Form1
Public points As Double, hours As Integer
Private Sub btnRecord_Click(sender As Object, e As EventArgs) Handles btnRecord.Click
Dim gpaPoints As Double
Dim creditHours As Integer
Dim grade As String
If cmbGrades.SelectedIndex < 0 Then
MsgBox("Please select a grade.")
Exit Sub
ElseIf txtHours.Text = "" Then
MsgBox("Please enter credit hours.")
Else
grade = cmbGrades.SelectedItem
creditHours = CInt(txtHours.Text)
gpaPoints = CalcGPA(grade, creditHours)
points += gpaPoints
hours += creditHours
ClearList()
End If
End Sub
Public Sub ClearList()
cmbGrades.SelectedIndex = -1
cmbGrades.Text = "Select a grade"
txtHours.Text = ""
End Sub
Public Function CalcGPA(grade As String, creditHours As Integer)
Dim gpaPoints As Double
Select Case (grade)
Case "A"
gpaPoints = 4
Case "B"
gpaPoints = 3
Case "C"
gpaPoints = 2
Case "D"
gpaPoints = 1
Case Else
gpaPoints = 0
End Select
Return gpaPoints
End Function
Private Sub btnGpa_Click(sender As Object, e As EventArgs) Handles btnGpa.Click
Dim calcGpa As Double = points / hours
txtGpa.Text = FormatNumber(calcGpa, 2)
End Sub
End Class
我基本上有记录按钮,它可以很好地清除列表并允许某人进入二年级,但计算按钮不起作用,我无法弄清楚。我真诚地感谢任何帮助。
【问题讨论】:
-
请注意:您的
creditHours参数未使用。 -
为了帮助您调试:任何使用 NaN 的计算都会给出 NaN,而且 0/0 也会给出 NaN 用于浮点数计算,例如您的案例点数/小时数)
-
感谢您的快速回复@pac0 - 您能否顺便详细说明一下?即使我有 hours += creditHours 和将文本框转换为整数的变量,它是否被视为未使用?
-
这可能不是您的问题的原因,只是一个旁注。但无论如何,您确实在 btn_click 处理程序中计算 creditHours 的一些值,但是当您调用
gpaPoints = CalcGPA(grade, creditHours)时,似乎您在函数CalcGPA中根本不使用 creditHours 。 -
你应该设置 Option Strict On