我正在为 13 年级的课程作业创建一个测验项目,并正在制作多项选择表格。我有存储在 2D 数组中的问题,其中每个问题可能有 4 个答案。 我想知道如何将保存方程的字符串转换为可以求解正确答案的整数。当尝试简单地 CInt 保存问题的字符串时,我得到 System.InvalidCastException: 'Conversion from string "4x4" to type 'Integer' is not valid' 错误。
Questions(0) = "2x2"
Questions(1) = "4x4"
Questions(2) = "6x8 "
Questions(3) = "5x3"
Questions(4) = "10x10"
Dim question As String = Questions(value)
Dim answer As Integer = CInt(question) 'this is the line I get the error
Dim UserAnswer As String
If UserAnswer = answer Then
UsersMarks = UsersMarks + 1 'increment
End If
Accuracy = (UsersMarks / TotalMarks) * 100
lblAccuracy.Text = Accuracy & "%"
TotalMarks = TotalMarks + 1 'increment
lblMarks.Text = UsersMarks & " / " & TotalMarks
If TotalMarks = 5 Then
Me.Hide()
Summary.Show()
End If
任何帮助将不胜感激,因为我真的不知道如何解决它。
CInt
函数只能将表示数值的字符串直接转换为整数。但是,您不能直接将“4x4
”之类的数学表达式转换为整数,因为需要先对它们进行求值。
要计算这些表达式,您可以使用
DataTable.Compute
方法。此方法计算以字符串形式给出的数学表达式的结果。
您可以按如下方式更新代码:
Dim question As String = Questions(value)
Dim expression As String = question.Replace("x", "*") ' Replace 'x' with the multiplication operator
Dim result As Object = New DataTable().Compute(expression, Nothing)
Dim answer As Integer = CInt(result)
然后,将用户的答案转换为整数并进行比较:
Dim UserAnswer As String
Dim UserAnswerInt As Integer = CInt(UserAnswer)
If UserAnswerInt = answer Then
UsersMarks = UsersMarks + 1 ' Increment
End If