nikmag Skrevet 22. januar 2010 Del Skrevet 22. januar 2010 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 Lenke til kommentar
Psy Skrevet 22. januar 2010 Del Skrevet 22. januar 2010 (endret) 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 22. januar 2010 av Psy Lenke til kommentar
nikmag Skrevet 22. januar 2010 Forfatter Del Skrevet 22. januar 2010 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 Lenke til kommentar
nikmag Skrevet 22. januar 2010 Forfatter Del Skrevet 22. januar 2010 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
Psy Skrevet 22. januar 2010 Del Skrevet 22. januar 2010 Fordi de ligger i en annen metode. Meningen var at de skulle ligge i Utregning_Click før den andre koden din. Lenke til kommentar
nikmag Skrevet 22. januar 2010 Forfatter Del Skrevet 22. januar 2010 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 Lenke til kommentar
Psy Skrevet 22. januar 2010 Del Skrevet 22. januar 2010 Det viser seg at i .NET heter det FormatException og ikke NumberFormatException, derfor får du feil på den. :-) Lenke til kommentar
nikmag Skrevet 22. januar 2010 Forfatter Del Skrevet 22. januar 2010 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
Psy Skrevet 22. januar 2010 Del Skrevet 22. januar 2010 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
nikmag Skrevet 22. januar 2010 Forfatter Del Skrevet 22. januar 2010 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
GeirGrusom Skrevet 22. januar 2010 Del Skrevet 22. januar 2010 (endret) 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 Endret 22. januar 2010 av GeirGrusom Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå