Gå til innhold

[Løst]Kalkulator med noen feil å rette opp :S


Anbefalte innlegg

Hei!

Nå har jeg brukt rundt 10-15 min på å lage en kalkulator, som virker ganske greit, problemet mitt er da at hvis jeg ikke bare skriver inne tall klipper kalkulatoren, fordi det er en operasjon som er umulig å utføre for den.

Her har dere koden jeg har skrevet

Public Class Form1

   Private Sub Utregning_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Utregning.Click

       'Adderer ut tallene du setter inn i Tekstboksene(Venstre tekstboks + Høyre tekstboks)
       If Addere.Checked = True Then
           MessageBox.Show(Venstre.Text & "+" & Høyre.Text & "=" & Double.Parse(Venstre.Text) + Double.Parse(Høyre.Text))
       End If

       'Subtraherer tallene du setter inn i tekstboksene(Venstre tekstboks - Høyre tekstboks)
       If Subtrahere.Checked = True Then
           MessageBox.Show(Venstre.Text & "-" & Høyre.Text & "=" & Double.Parse(Venstre.Text) - Double.Parse(Høyre.Text))
       End If

       'Multipliserer tallene du setter inn i tekstboksene(Venstre tekstboks * Høyre tekstboks)
       If Multiplisere.Checked = True Then
           MessageBox.Show(Venstre.Text & "*" & Høyre.Text & "=" & Double.Parse(Venstre.Text) * Double.Parse(Høyre.Text))
       End If

       'Dividerer tallene du setter inn i tekstboksene(Venstre tekstboks / Høyre tekstboks)
       If Dividere.Checked = True Then
           MessageBox.Show(Venstre.Text & "/" & Høyre.Text & "=" & Double.Parse(Venstre.Text) / Double.Parse(Høyre.Text))
       End If

   End Sub

 

Bare sånn for å klare opp i ting har jeg fire radioknapper som det står Addere,Subtrahere, Multiplisere og Dividere på. En knapp som heter Utregning og o tekstboker, den til venstre heter Vesnstre og den til høyre heter faktisk Høyre :0

 

Det jeg da lurer på er om noen vet hvordan jeg kan få en MessageBox som popper opp og "sier" noe hvis det er skrevet bokstaver i en av tekstboksene.

Ellers er jeg glad om jeg kan få noen tips om hva jeg kan gjøre for at kalkulatoren skal virke bedre, eller noe slikt :D

Lenke til kommentar
Videoannonse
Annonse

Problemet ditt er antageligvis at Double.Parse(Venstre.Text) kaster exception om Venstre.Text ikke er et gyldig tall.

For å unngå dette må du selv håndtere feilen om den skulle dukke opp. Dette gjør du med et try...catch statement.

 

F.eks

 

Dim i1, i2 as Double
Try
  i1 = Double.Parse(Venstre.Text)
  i2 = Double.Parse(Høyre.Text)
Catch ex as NumberFormatException
  MessageBox.Show("Ugyldig input.")
  Return
End Try

' Gjør resten av funksjonen men bruk i1 og i2 istedenfor Double.Parse(Venstre.Text) osv

Endret av Psy
Lenke til kommentar
Problemet ditt er antageligvis at Double.Parse(Venstre.Text) kaster exception om Venstre.Text ikke er et gyldig tall.

For å unngå dette må du selv håndtere feilen om den skulle dukke opp. Dette gjør du med et try...catch statement.

 

F.eks

 

Dim i1, i2 as Double
Try
  i1 = Double.Parse(Venstre.Text)
  i2 = Double.Parse(Høyre.Text)
Catch ex as NumberFormatException
  MessageBox.Show("Ugyldig input.")
  Return
End Try

' Gjør resten av funksjonen men bruk i1 og i2 istedenfor Double.Parse(Venstre.Text) osv

 

Da skal jeg prøve det :D

Lenke til kommentar

Jeg får bare beklage om jeg er helt ekstremt noob akuratt nå, men jeg får en del feilmeldinger

 

Public Class Form1



   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       Dim i1, i2 As Double
       Try
           i1 = Double.Parse(Venstre.Text)
           i2 = Double.Parse(Høyre.Text)
       Catch ex As NumberFormatException
           MessageBox.Show("Ugyldig input.")
           Return
       End Try
   End Sub
   Private Sub Utregning_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Utregning.Click

       'Adderer ut tallene du setter inn i Tekstboksene(Venstre tekstboks + Høyre tekstboks)
       If Addere.Checked = True Then
           MessageBox.Show(Venstre.Text & "+" & Høyre.Text & "=" & i1(Venstre.Text) + i2(Høyre.Text))
       End If

       'Subtraherer tallene du setter inn i tekstboksene(Venstre tekstboks - Høyre tekstboks)
       If Subtrahere.Checked = True Then
           MessageBox.Show(Venstre.Text & "-" & Høyre.Text & "=" & i1(Venstre.Text) - i2(Høyre.Text))
       End If

       'Multipliserer tallene du setter inn i tekstboksene(Venstre tekstboks * Høyre tekstboks)
       If Multiplisere.Checked = True Then
           MessageBox.Show(Venstre.Text & "*" & Høyre.Text & "=" & i1(Venstre.Text) * i2(Høyre.Text))
       End If

       'Dividerer tallene du setter inn i tekstboksene(Venstre tekstboks / Høyre tekstboks)
       If Dividere.Checked = True Then
           MessageBox.Show(Venstre.Text & "/" & Høyre.Text & "=" & i1(Venstre.Text) / i2(Høyre.Text))
       End If


   End Sub

End Class

 

 

Jeg får errors på alle i1 og i2, og på NumberFormatException

Hvorfor??

Lenke til kommentar
Fordi de ligger i en annen metode. Meningen var at de skulle ligge i Utregning_Click før den andre koden din.

 

 

Ok :S

My mistake

 

Det kommer fortsatt opp feil:

Error 1 Type 'NumberFormatException' is not defined. C:\Users\nikmag7122\AppData\Local\Temporary Projects\Kalkulator\Form1.vb 9 21 Kalkulator

Error 2 Expression is not an array or a method, and cannot have an argument list. C:\Users\nikmag7122\AppData\Local\Temporary Projects\Kalkulator\Form1.vb 16 69 Kalkulator

Error 3 Expression is not an array or a method, and cannot have an argument list. C:\Users\nikmag7122\AppData\Local\Temporary Projects\Kalkulator\Form1.vb 16 88 Kalkulator

Error 4 Expression is not an array or a method, and cannot have an argument list. C:\Users\nikmag7122\AppData\Local\Temporary Projects\Kalkulator\Form1.vb 21 69 Kalkulator

Error 5 Expression is not an array or a method, and cannot have an argument list. C:\Users\nikmag7122\AppData\Local\Temporary Projects\Kalkulator\Form1.vb 21 88 Kalkulator

Error 6 Expression is not an array or a method, and cannot have an argument list. C:\Users\nikmag7122\AppData\Local\Temporary Projects\Kalkulator\Form1.vb 26 69 Kalkulator

Error 7 Expression is not an array or a method, and cannot have an argument list. C:\Users\nikmag7122\AppData\Local\Temporary Projects\Kalkulator\Form1.vb 26 88 Kalkulator

Error 8 Expression is not an array or a method, and cannot have an argument list. C:\Users\nikmag7122\AppData\Local\Temporary Projects\Kalkulator\Form1.vb 31 69 Kalkulator

Error 9 Expression is not an array or a method, and cannot have an argument list. C:\Users\nikmag7122\AppData\Local\Temporary Projects\Kalkulator\Form1.vb 31 88 Kalkulator

Lenke til kommentar

For NumberFormatException se min forrige post.

Jeg bare antar nå at du fortsatt har i1(Venstre.Text). Denne gir deg feilen 'Error 2 Expression is not an array or a method, and cannot have an argument list.' fordi i1 og i2 er variabler og ikke metoder. Det riktige å skrive er

MessageBox.Show(Venstre.Text & "+" & Høyre.Text & "=" & (i1 + i2))

Lenke til kommentar
For NumberFormatException se min forrige post.

Jeg bare antar nå at du fortsatt har i1(Venstre.Text). Denne gir deg feilen 'Error 2 Expression is not an array or a method, and cannot have an argument list.' fordi i1 og i2 er variabler og ikke metoder. Det riktige å skrive er

MessageBox.Show(Venstre.Text & "+" & Høyre.Text & "=" & (i1 + i2))

 

 

Ah, takker. Virker fint nå :]

Lenke til kommentar

Public Function ALU(ByVal op As String) As Func(Of Double, Double, Double)
Select Case op
	Case "+"
	   Return Function(a As Double, b As Double) a + b
	Case "-"
		Return Function(a As Double, b As Double) a - b
	Case "*"
		Return Function(a As Double, b As Double) a * b
	Case "/"
		Return Function(a As Double, b As Double) a / b
	Case Else
		Return Function(a As Double, b As Double) 0
End Select
End Function
Private Function Calculate(ByVal p1 As String, ByVal p2 As String, ByVal op As String) As Double
Dim v1 As Double, v2 As Double
If Double.TryParse(p1, v1) And Double.TryParse(p2, v2) Then
	Return ALU(op)(v1, v2)
End If
End Function

Her er noe du kanskje kan bruke.

 

edit: litt sent ute :p

Endret av GeirGrusom
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...