【发布时间】:2015-02-09 14:07:33
【问题描述】:
我正在 microsoft visual studio 2012 中做一个项目,我正在尝试编写一个应用程序来确定模块平均值。
脚本如下:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles confirm.Click
Dim sum As Double
sum = CDbl(test.Text) * 50% + CDbl(project.Text) * 30% + CDbl(quiz.Text) * 30%
Dim modulemark As Double
modulemark = CDbl(CAmarks.Text) * 50% + CDbl(exam.Text) * 50%
Dim Grade As String
If sum < 40 Then
Grade = "F"
ElseIf sum >= 40 And modulemark < 65 And modulemark >= 40 Then
Grade = "C"
ElseIf sum >= 40 And modulemark < 75 And modulemark >= 65 Then
Grade = "B"
Else
Grade = "A"
End If
该脚本旨在计算分数并在单击名为“确认”的按钮后给出评分。
但是,当我尝试运行编码时,它说:
Microsoft.VisualBasic.dll 中出现“System.InvalidCastException”类型的未处理异常
附加信息:从字符串“”到类型“Double”的转换无效。
有人能看出什么问题吗?我是 Visual Studio 的新手,感谢您的帮助。
附:编辑最近的脚本。
附:感谢用户“Tim”的脚本,但由于某些未知原因,在“Double.TryParse(caMarks.Text, caMarks)”这一行有一个蓝色波浪线指向 caMarks,上面写着“'Text' 不是“双重”的成员”。这简直是在扯我的头发!请帮忙!
看起来对象的名称有冲突。
【问题讨论】:
-
嗯 - 问题是你在某个地方试图将 "" 转换为双精度。可能在 CDbl(*.text) 调用之一中。调试您的代码并找出哪个。
-
我调试了,它说“sum = CDbl(test.Text) * 50% + CDbl(project.Text) * 30% + CDbl(quiz.Text) * 30%”这行是错误的.附言我尝试将“Dim Grade As Integer”部分变成“Dim Grade As Double”,但它仍然不起作用。有什么建议吗?
-
您是否在所有字段中都输入了数据?您不能留空并假设它们将被设置为 0。
-
是的。但是,我还没有进行验证。但是我插入了未显示且不完整的学生姓名,我稍后会做,所有 4 个部分(测试、测验、项目、考试),但它仍然不起作用。
-
要确定错误的确切来源,请尝试为每个变量创建一个 Double 类型的单独变量,例如 Dim CMarks as Double: CMarks=CDBL(CMarks.Text) 等等,然后运行您的程序。这将显示导致问题的语句(最好使用调试模式)。