Psyakz
Psyakz

Reputation: 43

calculator; display numbers and operators

I'm working on a calculator and I woulod like to know if someone can give some hint on how to display the numbers and operators in the textbox. I've tried to do it myself but haven't succed...

Greetings,

P.D. hints only, not code done. I need to learn!

Here's my code.

Public Class Form1
Dim FirstNumber As Double
Dim Operation As String
Dim ClearField As Boolean = True

Private Sub AddNumber(NewValue As String)
    If ClearField = True Then Viewer.Text = ""
    Viewer.Text &= NewValue
    ClearField = False

End Sub

'BUTTONS
'Numbers

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    AddNumber("1")

End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    AddNumber("2")
End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    AddNumber("3")
End Sub

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    AddNumber("4")
End Sub

Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
    AddNumber("5")
End Sub

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
    AddNumber("6")
End Sub

Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
    AddNumber("7")
End Sub

Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
    AddNumber("8")
End Sub

Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
    AddNumber("9")
End Sub

Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Zero.Click
    AddNumber("0")
End Sub

'Buttons "," "del" "clear"

Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Dot.Click
    Viewer.Text = Viewer.Text + ","
End Sub

Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Del.Click
    Viewer.Text = Viewer.Text.Remove(Viewer.Text.Length - 1, 1)
End Sub

Private Sub Clear_Click(sender As Object, e As EventArgs) Handles Clear.Click
    Viewer.Text = ""
End Sub

Private Sub Sum_Click(sender As Object, e As EventArgs) Handles Sum.Click
    FirstNumber = Val(Viewer.Text)
    Operation = "SUM"
    Viewer.Text = ""
End Sub

Private Sub Minus_Click(sender As Object, e As EventArgs) Handles Minus.Click
    FirstNumber = Val(Viewer.Text)
    Operation = "MINUS"
    Viewer.Text = ""
End Sub

Private Sub Multi_Click(sender As Object, e As EventArgs) Handles Multi.Click
    FirstNumber = Val(Viewer.Text)
    Operation = "MULTI"
    Viewer.Text = ""
End Sub

Private Sub Div_Click(sender As Object, e As EventArgs) Handles Div.Click
    FirstNumber = Val(Viewer.Text)
    Operation = "DIV"
    Viewer.Text = ""
End Sub

Private Sub Result_Click(sender As Object, e As EventArgs) Handles Result.Click
    Dim SecondNumber As Double
    Dim Result As Double

    SecondNumber = Val(Viewer.Text)

    'Fx
    If Operation = "SUM" Then
        Result = FirstNumber + SecondNumber
    End If

    If Operation = "MINUS" Then
        Result = FirstNumber - SecondNumber
    End If

    If Operation = "MULTI" Then
        Result = FirstNumber * SecondNumber
    End If

    If Operation = "DIV" Then
        Result = FirstNumber / SecondNumber
    End If

    Viewer.Text = Result
    ClearField = True

End Sub


Private Sub SalirToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles SalirToolStripMenuItem1.Click
    End
End Sub

End Class

Upvotes: 2

Views: 2195

Answers (1)

a) Dont Use Val

It is just awful and will cause problems in the long run.

b) Using an Enum:

Enum myOp
   None 
   Adding 
   Subbing
   Divide
   Equals
End Enum

Dim Op As myOp

These end up having integer values from 0 to 4, but you can refer to them by name. A Case Statement makes for less code that is easier to read in the opinion of most:

Select Case Op
      Case myOp.Adding
           Result = FirstNumber + SecondNumber

      Case myOp.Subbing
            Result = FirstNumber - SecondNumber
    ' etc

This prevents nasty bugs when you forget whether it is "Add", "ADD", "ADDING", "Adding" or "Addition" (and/or misspell it "Additon".)

Upvotes: 1

Related Questions