我正在编写一个简单的Visual Basic四函数计算器(加,减,乘和除)应用程序,我想在按下操作符时显示中间结果。
我创建的Windows窗体包含按钮,因此只需通过鼠标点击GUI(无键盘输入)即可输入
根据要求中的定义,将根据以下顺序规则输入完整的“问题”:
我知道需要在操作员click_events中进行更改以满足此要求,但我不知道如何操作。
这里是加,减,乘,除和等于按钮的代码
Dim txtNumber As String
Dim variable1 As Decimal
Dim variable2 As Decimal
Dim answerResult As Decimal
Dim arithmeticProcess As String
Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click
If answerResult <> 0 Then
answerResult = variable1 + variable2
variable1 = CDec(lblDisplay.Text)
lblDisplay.Text = ""
arithmeticProcess = "+"
Else
variable1 = CDec(lblDisplay.Text)
lblDisplay.Text = ""
arithmeticProcess = "+"
End If
End Sub
Private Sub btnSubtract_Click(sender As System.Object, e As System.EventArgs) Handles btnSubtract.Click
variable1 = CDec(lblDisplay.Text)
lblDisplay.Text = ""
arithmeticProcess = "-"
End Sub
Private Sub btnMultiply_Click(sender As System.Object, e As System.EventArgs) Handles btnMultiply.Click
variable1 = CDec(lblDisplay.Text)
lblDisplay.Text = ""
arithmeticProcess = "*"
End Sub
Private Sub btnDivide_Click(sender As System.Object, e As System.EventArgs) Handles btnDivide.Click
variable1 = CDec(lblDisplay.Text)
lblDisplay.Text = ""
arithmeticProcess = "/"
End Sub
Private Sub btnEqual_Click(sender As System.Object, e As System.EventArgs) Handles btnEqual.Click
variable2 = lblDisplay.Text
If arithmeticProcess = "+" Then
answerResult = variable1 + variable2
ElseIf arithmeticProcess = "-" Then
answerResult = variable1 - variable2
ElseIf arithmeticProcess = "*" Then
answerResult = variable1 * variable2
Else
answerResult = variable1 / variable2
End If
answerResult = Math.Round(answerResult, 9)
Select Case answerResult
Case Is > 4000000000
MessageBox.Show("The answer is too large to be displayed.")
variable1 = 0
variable2 = 0
lblDisplay.Text = ""
Case Is < -4000000000
MessageBox.Show("The answer is too small to be displayed.")
variable1 = 0
variable2 = 0
lblDisplay.Text = ""
Case Else
lblDisplay.Text = CStr(answerResult)
End Select
End Sub
答案 0 :(得分:0)
首先,我需要礼貌地指出,当你继续这个程序时,我认为你会遇到逻辑上的问题,但是弄清楚这是编程乐趣的一部分。您可能需要退一步并对计算器应用程序进行流程图,然后再返回它。
现在,您的数字按钮(0-9)的代码是什么样的,具体来说,您如何知道用户是在键入variable1
还是variable2
?假设您以“逻辑”的方式执行该操作,这就是我要做的事情:
Dim variable1 As Decimal = 0
为您的数字提供各种类型的“默认值”,并为variable2
执行相同操作。btnEqual_Click
中提取代码并将其置于自己的方法中,我们将其称为Public Sub DoMaths()
,然后将DoMaths()
放入btnEqual_Click(...)
。DoMaths()
。现在这里是棘手的部分。您必须仔细跟踪您在指定时间在屏幕上显示的variableX
。
在DoMaths()
中,执行计算后,您需要将answerResult
的值移至variable1
,并将variable2
重置为零。我会把它放在Case Else
块的末尾。
Case Else
lblDisplay.Text = CStr(answerResult)
variable1 = answerResult
variable2 = 0
这会让您回到用户刚刚输入第一个数字(variable1
)并准备按下一个算术运算符键的状态。
编辑,以响应您的数字按钮代码:
首先,建议:txtNumber += "1"
应该是txtNumber &= "1"
。虽然有其他参数,但加上数字是加号,而且用于连接两个字符串。
其次,为了实现您所希望的中间计算,您将不得不跟踪是否已执行“最终计算”(使用“等于”键)。我建议您使用variable1
来完成此操作。当按下任何加/减/等于/等等按钮时,只要variable1
为零,你[通常]可以假设没有任何事情要做。
variable1
。variable2
中,因为variable1
非零。variable1
中,并清除variable2
和arithmeticProcess
的值。现在,如果用户刚刚启动应用程序,您基本上回到了相同的位置,并在计算中输入了第一个数字。你应该可以从这里继续正常。