我编的VB计算器的一个BUG

来源:百度知道 编辑:UC知道 时间:2024/06/08 18:08:28
下面是我编的一个计算器的代码,发现一个很大的BUG,就是在第一次输入运算符后输入数字在一次输入运算符后就直接计算第二次的运算符了,第一次的被忽略了。如8+3- = 5。这样,有高手谢谢帮我解决下这个BUG。。
Option Explicit
Dim num1, num2 As Single
Dim strnum1, strnum2 As String
Dim firstnum, pointflag As Boolean
Dim runsign As Integer
Dim signflag As Boolean
Dim equal As Single
Sub abc()
num1 = 0
num2 = 0
strnum1 = ""
strnum2 = ""
firstnum = True
pointflag = False
signflag = False
runsign = 0
Text1.Text = "0."
End Sub
Sub run()
num1 = Val(strnum2)
num2 = Val(strnum1)
Select Case runsign
Case 1
equal = num1 + num2
Case 2
equal = num1 - num2
Case 3
equal = num1 * num2
Case 4
equal = num1 / num2
End Select
strnum2 = Str(equal)
strnum1 = strnum2
Text1.Text = Val(strnum2)
End Sub
Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0 To 9
If firstnum Then

你的runsign = Index - 10 被第二次赋值的时候,第一次的值就没有了
就是这个问题造成你的计算结果不正确。
其实就是连续运算的问题,没有解决好
比如:3+5-2+3=的问题
这里如果不考虑优先计算的法则
就可以在输入runsign第二个的时候使
num1=num1 () num2,即把第一个和第个数的运算结果赋值给NUM1
然后再改变runsign的值后,再输入就作为num2
知道按了“=”的时候,再做一次num1和num2的运算,才显示结果

正常!

不是bug
一般的计算器不都是这样吗?