如何从数组中的字符串求解方程?

问题描述 投票:0回答:1

我正在为 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

任何帮助将不胜感激,因为我真的不知道如何解决它。

vb.net
1个回答
-1
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.