多次计算VB.NET

时间:2013-11-21 06:45:42

标签: .net vb.net calculator

如果这个问题被多次询问,我很抱歉。 但在所有帖子上......我找不到明确的解决方案。 我之前问了我的问题,这对我帮助很大......还有这个问题。

进行多次计算而不按'='符号

如果

'5+3 ='

然后

'8'

务!

但是如果

'5+5/10='

然后

不工作

不打算像(5 * 5)+(2 + 3)那样建造一个困难的calcutor 它应该继续对前一个结果进行计算

如果用户尝试进行多次计算,请制作一个草率的解决方案 他得到一个消息框(“错误”),一切都重置

SUB FOR THE OPERATORS

button.text成为运营商:

Private Sub Operators_Buttons_Click(sender As Object, e As EventArgs) Handles AdditionButton.Click, SubtractionButton.Click, _
                                                                           MultiplicationButton.Click, DivisionButton.Click
    Dim x As Button = CType(sender, Button)
    Dim button As String = x.Text


    _Operator = button

如果文本框中没有值,则此子修复

If ThereIsAnValue() = False Then
            MessageBox.Show("Give in a value before u use an operator")



            ResultTextbox.Text = "0"

'如果ThereIsAnValue为true,它将检查某处是否存有第一个数字     '如果_IsThereAnFirstNumber在formload

中始终为false

否则

        If _IsThereAnFirstNumber = False Then

'输入将进入_value1

 _Value1 = Convert.ToDecimal(ResultTextbox.Text)
                ResultTextbox.Text = "0"

'现在Value1中有一个值

                _IsThereAnFirstNumber = True

如果我们按下运算符_IsThereAnFirstNumber为真

ElseIf _IsThereAnFirstNumber = True Then

我制作了这个垃圾代码......

                MessageBox.Show("Please press the '=' sign after every single calculation")
                MessageBox.Show("System reset")
                _IsThereAnFirstNumber = False
                _Value1 = Nothing
                _Value2 = Nothing
                ResultTextbox.Text = "0"

            End If

SUB FOR THE EQUAL SIGN

Private Sub EqualsButton_Click(sender As Object, e As EventArgs) Handles EqualsButton.Click
        If _IsThereAnFirstNumber = True Then

            _Value2 = Convert.ToDecimal(ResultTextbox.Text)
            ResultTextbox.Text = "0"
        End If



        Select Case _Operator
            Case "+"
                _Result = _Value1 + _Value2
            Case "-"
                _Result = _Value1 - _Value2
            Case "*"
                _Result = _Value1 * _Value2
            Case "/"
                _Result = _Value1 / _Value2

        End Select
        ResultTextbox.Text = Convert.ToString(_Result)

        _IsThereAnFirstNumber = False
    End Sub

换句话说,如果ThereIsAnFirstNumber为true,我的程序只输入“垃圾代码”。 因为如果我按下等号,它将变为假。

但是如果进入“垃圾代码”,我应该编写哪些代码? 为了继续计算?

当我说'5 + 5/10 ='时它会''''''''''''''''''''''''''''''''''''''''''''''''''''''''并将其除以/ 10,如果那时我会说+3在按下'='符号后它必须是4

感谢名单

1 个答案:

答案 0 :(得分:0)

如果您想构建一个简单的计算器,您的方法是不对的。您应该继续Windows计算器的工作,即在按下操作时计算结果。解释起来相当复杂,我不会为你编写整个代码,只是为了指导你如何完成,你应该按照以下步骤进行操作;

 Private _result as decimal
 Private _value as decimal

 Private Sub PlusButton_Click(sender As Object, e As EventArgs) Handles PlusButton.Click

  If _result <> cdec(0) then
     _result = _result + _value
  EndIf

  // Then you can add your other logics, such as writting the calculation in a Textbox
End Sub

你也可以对其他标志做同样的事情。
如果您希望对所有标志使用1个手柄,那么您就像使用case-else块一样。