在我的VB.Net 4.5 WPF应用程序中,我有3个文本框供用户输入以下内容:
问题:我发现我无法将运算符字符串转换为实际的数学运算符,因为运算符没有数据类型。
我不能使用+或&或val或eval来计算:txtFirstNumber txtOperator txtSecondNumber
例如:如果用户输入12作为firstNumber,+作为operator,输入5作为secondNumber,那么我想自动计算12 + 5并将答案放在名为CalculateAnswer的标签中。
如果用户输入不同的内容,我仍然希望进行计算。即使他们输入双数作为其中一个数字。
所以我需要帮助!这是我的代码:
Dim CalcAnswer As Double
Try
Dim first As Double = CDbl(txtFirstNumber.Text)
Dim op As String = txtOperator.Text
Dim second As Double = CDbl(txtSecondNumber.Text)
CalcAnswer = Eval(first & op & second)
CalculateAnswer.Content = CStr(CalcAnswer)
Catch CalcError As Exception
MsgBox(CalcError.Message)
End Try
提前致谢!
答案 0 :(得分:1)
我会这样做:
Try
Dim first As Decimal = Decimal.Parse(txtFirstNumber.Text)
Dim second As Decimal = Decimal.Parse(txtSecondNumber.Text)
CalculateAnswer.Content = Eval(first, second, txtOperator.Text).ToString()
Catch CalcError As Exception
MsgBox(CalcError.Message)
End Try
'...
Function Add(ByVal a As Decimal, ByVal b As Decimal) As Decimal
Return a + b
End Function
Function Subtract(ByVal a As Decimal, ByVal b As Decimal) As Decimal
Return a - b
End Function
Function Multiply(ByVal a As Decimal, ByVal b As Decimal) As Decimal
Return a * b
End Function
Function Divide(ByVal a As Decimal, ByVal b As Decimal) As Decimal
Return a / b
End Function
Function Eval(ByVal a As Decimal, ByVal b As Decimal, ByVal Operator As String) As Decimal
Operator = Operator.Trim()
Select Operator
Case "+"
Return Add(a, b)
Case "-"
Return Subtract(a, b)
Case "*","x"
Return Multiply(a, b)
Case "/"
Return Divide(a, b)
Case Else
Throw New InvalidArgumentException("Did not recognize operator: " & Operator)
End Select
End Function