Public Class Form1
'计算器的原理:
'将输入的算式以运算符进行分割并计算
'例如1+1分割成1、+、1,三个部分,然后运算
Function CutStr(ByVal InPutStr As String) As String()
Dim CalStr(3) As String
If InStr(InPutStr, \"+\") Then '算式中有+号 那么就是加法
CalStr(0) = InPutStr.Split(\"+\")(0)
CalStr(1) = \"+\"
CalStr(2) = InPutStr.Split(\"+\")(1)
ElseIf InStr(InPutStr, \"-\") Then '算式中有-号 那么就是减法
CalStr(0) = InPutStr.Split(\"-\")(0)
CalStr(1) = \"-\"
CalStr(2) = InPutStr.Split(\"-\")(1)
ElseIf InStr(InPutStr, \"*\") Then '算式中有*号 那么就是乘法
CalStr(0) = InPutStr.Split(\"*\")(0)
CalStr(1) = \"*\"
CalStr(2) = InPutStr.Split(\"*\")(1)
ElseIf InStr(InPutStr, \"/\") Then '算式中有/号 那么就是除法
CalStr(0) = InPutStr.Split(\"/\")(0)
CalStr(1) = \"/\"
CalStr(2) = InPutStr.Split(\"/\")(1)
Else '算式中没有运算符号
CalStr(0) = InPutStr
CalStr(1) = \"\"
CalStr(2) = \"\"
End If
Return CalStr
End Function
Private Sub 数字键_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 数字键0.Click, 数字键1.Click, 数字键2.Click, 数字键3.Click, 数字键4.Click, 数字键5.Click, 数字键6.Click, 数字键7.Click, 数字键8.Click, 数字键9.Click
'输入键,如果当前是0那么覆盖输入,如果当前不是0那么追加输入
If 显示框.Text = \"0\" Then
显示框.Text = sender.text
Else
显示框.Text = 显示框.Text & sender.text
End If
End Sub
Private Sub 小数点_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 小数点.Click
'此处比较复杂举例说明
'当前 按下后输入
'没有运算符没有小数的数字例如:2 2.
'没有运算符含有小数的数字例如:2. 不输入仍是:2.
'含有运算符没有小数例如:3+3 3+3.
'含有运算符含有小数例如:3+3. 不输入仍是3+3.
'含有运算符运算符后为空例如:3+ 补0输入:3+0.
If CutStr(显示框.Text)(1) = \"\" Then '表示没有运算符
If InStr(显示框.Text, sender.text) = False Then '没有运算符没有小数的数
字例如:2 2.
显示框.Text = 显示框.Text & sender.text
End If
Exit Sub
Else '表示含有运算符
If InStr(CutStr(显示框.Text)(2), sender.text) = False Then
If CutStr(显示框.Text)(2) = \"\" Then '含有运算符运算符后为空例如:3+ 补0输入:3+0.
显示框.Text = 显示框.Text & \"0\" & sender.text
Else '含有运算符没有小数例如:3+3 3+3.
显示框.Text = 显示框.Text & sender.text
End If
End If
End If
End Sub
Private Sub 运算符_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 运算符乘.Click, 运算符除.Click, 运算符加.Click, 运算符减.Click
'如果已经存在运算符了,那么,不允许输入
If (InStr(显示框.Text, \"+\") Or InStr(显示框.Text, \"-\") Or InStr(显示框.Text, \"*\") Or InStr(显示框.Text, \"/\")) = False Then
显示框.Text = 显示框.Text & sender.text
End If
End Sub
Private Sub 清零键_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 清零键.Click
'清零就是在显示框显示0
显示框.Text = \"0\"
End Sub
Private Sub 运算符等于_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 运算符等于.Click
'对运算符进行判断,并进行相应的运算
Select Case CutStr(显示框.Text)(1)
Case \"+\"
显示框.Text = Val(CutStr(显示框.Text)(0)) + 框.Text)(2))
Case \"-\"
显示框.Text = Val(CutStr(显示框.Text)(0)) - 框.Text)(2))
Case \"*\"
显示框.Text = Val(CutStr(显示框.Text)(0)) * Val(CutStr(显示Val(CutStr(显示Val(CutStr(显示
框.Text)(2))
Case \"/\"
显示框.Text = Val(CutStr(显示框.Text)(0)) / Val(CutStr(显示框.Text)(2))
Case Else
End Select
End Sub
End Class