Public Class Form4
Dim num1 As String '一个操作数(以 4 进制字符串存储)
Dim num2 As String '二个操作数(以 4 进制字符串存储)
Dim op As Char '算符
Private Function ConvertToDecimal(ByVal num As String) As Integer
Dim decimalValue As Integer = 0
Dim power As Integer = num.Length - 1
For Each digit As Char In num
Dim digitValue As Integer
Select Case digit
Case "0"
digitValue = 0
Case "1"
digitValue = 1
Case "2"
digitValue = 2
Case "3"
digitValue = 3
Case Else
'处理非法字符
MessageBox.Show("输入包含非法字符")
Return -1 '添加返回值以处理非法输入情况
End Select
decimalValue += digitValue * (4 ^ power)
power -= 1
Next
Return decimalValue
End Function
Private Function ConvertFromDecimal(ByVal decimalValue As Integer) As String
Dim result As String = ""
While decimalValue > 0
Dim remainder As Integer = decimalValue Mod 4
Select Case remainder
Case 0
result = "0" + result
Case 1
result = "1" + result
Case 2
result = "2" + result
Case 3
result = "3" + result
End Select
decimalValue = decimalValue \ 4
End While
Return result
End Function
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
'数字 0 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
'数字 1 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click
'数字 2 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button4_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button4.Click
'数字 3 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button11_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button11.Click
'存 + 第一个操作数和运算符,并清空文本框
num1 = TextBox1.Text
op = sender.text
TextBox1.Clear()
End Sub
Private Sub Button12_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button12.Click
'存 - 第一个操作数和运算符,并清空文本框
num1 = TextBox1.Text
op = sender.text
TextBox1.Clear()
End Sub
Private Sub Button13_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button13.Click
'存 * 第一个操作数和运算符,并清空文本框
num1 = TextBox1.Text
op = sender.text
TextBox1.Clear()
End Sub
Private Sub Button14_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button14.Click
'存 / 第一个操作数和运算符,并清空文本框
num1 = TextBox1.Text
op = sender.text
TextBox1.Clear()
End Sub
Private Sub Button15_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button15.Click
'= 算结果并显示
num2 = TextBox1.Text
Dim decimalNum1 As Integer = ConvertToDecimal(num1)
Dim decimalNum2 As Integer = ConvertToDecimal(num2)
Dim result As Integer
Select Case op
Case "+"
result = decimalNum1 + decimalNum2
Case "-"
result = decimalNum1 - decimalNum2
Case "*"
result = decimalNum1 * decimalNum2
Case "/"
If decimalNum2 = 0 Then
MessageBox.Show("除数不能为 0")
Exit Sub
End If
result = decimalNum1 / decimalNum2
End Select
TextBox1.Text = ConvertFromDecimal(result)
End Sub
Private Sub Button16_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button16.Click
'空文本框和操作数
TextBox1.Clear()
num1 = ""
num2 = ""
op = " "
End Sub
Private Sub Button17_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button17.Click
'除最后一位字符
If TextBox1.Text.Length > 0 Then
TextBox1.Text = TextBox1.Text.Substring(0, TextBox1.Text.Length - 1)
End If
End Sub
End Class