0

だから私は、この基本的な電卓のことをやって、VB をもっと学ぼうとしています。このアプリには 3 つのテキスト ボックスがあり、ユーザーは 2 つの値 (各ボックスに 1 つ) を入力し、3 番目のボックス (+、-、​​、/) に演算子を入力します。

ここに、ユーザーが演算子を入力したかどうかを確認するメソッドがあります。

Private Function isOperator(ByVal textBox As TextBox, ByVal name As String)
    Dim strOperatorList As String() = {"+", "-", "/", "*"}
    If Not strOperatorList.Contains(textBox.Text) Then
        MessageBox.Show(name & " does not contain a valid operator.", "Entry Error")
        textBox.SelectAll()
        Return False
    Else
        Return True
    End If
End Function

そして、私はそれがうまくいっていると確信しています。ここでボタンクリックでエラーが発生します:

Try
        If IsValidData() Then
            Dim operand1 As Decimal = CDec(txtOperand1.Text)
            Dim operand2 As Decimal = CDec(txtOperand2.Text)
            Dim strOperator As Double = CDbl(txtOperator.Text)
            Dim result As Decimal = operand1 + strOperator + operand2

            txtResult.Text = result
        End If
    Catch ex As Exception
        MessageBox.Show(ex.Message & vbCrLf & vbCrLf &
                        ex.GetType.ToString & vbCrLf & vbCrLf &
                        ex.StackTrace, "Exception")
    End Try

エラーは次のとおりです。

Dim strOperator As string = txtOperator.Text

エラーは言う:

Conversion from string "+" to type Double is not valid.

文字列を double に変更し、テキスト ボックスを double にキャストしようとしましたが、それでも同じエラーが発生します。私はそれを間違って宣言しているだけですか?

4

2 に答える 2

1

演算子を数値に変換することはできません。文字列を使用してください。

Dim operator As String = txtOperator.Text

次に、文字列はデータであり、演算子はコードの一部であるため、文字列を演算子として使用することはできません。値をどうするかをオペレーターから決定します。

Dim result As Decimal
If operator = "+" Then
  result = operand1 + operand2
ElseIf operstor = "-" Then
  result = operand1 - operand2
ElseIf operator = "/" Then
  result = operand1 / operand2
ElseIf operator = "*" Then
  result = operand1 * operand2
Else
  ' Oops, unknown opreator
End If
于 2013-10-29T20:58:55.823 に答える
0
Try
    If IsValidData() Then
        Dim operand1 As Decimal = CDec(txtOperand1.Text)
        Dim operand2 As Decimal = CDec(txtOperand2.Text)
        Dim strOperator As String = txtOperator.Text
        Dim result as Decimal
        Select Case strOperator
           Case "+"
              result = operand1 + operand2                  
           Case "-"
              result = operand1 - operand2                 
           Case "*"
              result = operand1 * operand2                  
           Case "/"
              result = operand1 / operand2
           Case Else
              'error
        end Select                 

        txtResult.Text = result
    End If
Catch ex As Exception
    MessageBox.Show(ex.Message & vbCrLf & vbCrLf &
                    ex.GetType.ToString & vbCrLf & vbCrLf &
                    ex.StackTrace, "Exception")
End Try
于 2013-10-29T21:01:38.187 に答える