Kan je niet beter mbv 'If' kijken of datgene waardoor je deelt gelijk is aan nul?
Ja dat kan en dan als het deeltal 0 is, de deling niet doen en een melding geven ofzo. Maar waarom denk je dat die DivideByZeroException gemaakt is? Inderdaad, zodat je die controles allemaal niet meer perse zelf hoeft te doen.
Private Sub uitkomst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles uitkomst.Click
If bol_plus = True Then
totaal2 = totaal1 + Convert.ToDouble(display.Text)
ElseIf bol_min = True Then
totaal2 = totaal1 - Convert.ToDouble(display.Text)
ElseIf bol_maal = True Then
totaal2 = totaal1 * Convert.ToDouble(display.Text)
ElseIf bol_delen = True Then
Try
totaal2 = totaal1 / Convert.ToDouble(display.Text)
Catch X As System.DivideByZeroException
MessageBox.Show(X.Message)
End Try
End If
display.Text = totaal2
totaal1 = 0
totaal2 = 0
bol_plus = False
bol_min = False
bol_maal = False
bol_delen = False
verder_nieuw = True
End Sub
End Class
PrivateSub uitkomst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles uitkomst.Click
Abbas - 05/01/2008 19:58 (laatste wijziging 05/01/2008 19:58)
Crew .NET
Dan is er toch niets verkeerd?! Als je deelt door 0, krijg je inderdaad een kader met de tekst "Oneindig". Wil je zelf een tekst dan doe je die x.Message weg en doe je:
oh ja en ik wil men rekenmachine nog iets uit breiden met toetsgevoeligheid, zodat ls ik de cijfers via mijn toetsenbord in tik dat ze ook op het scherm aan geklikt worden en verschijnen
Private Sub nr0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nr0.Click
if Getkeystate(vbKey0) And KEY_DOWN Then
If verder_nieuw = True Then
display.Clear()
End If
display.Text = display.Text & nr0.Text
verder_nieuw = False
End if
End Sub
PrivateSub nr0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles nr0.Click
if Getkeystate(vbKey0)And KEY_DOWN Then
If verder_nieuw =TrueThen
display.Clear()
EndIf
display.Text= display.Text& nr0.Text
verder_nieuw =False
Endif
EndSub
@titjes: ik heb jou normaal de versie door gestuurt zonder error handling, en ik heb het hei rook nog eens getest zonder try catch geeft hij oneindig in de display
@titjes: ik heb jou normaal de versie door gestuurt zonder error handling, en ik heb het hei rook nog eens getest zonder try catch geeft hij oneindig in de display
Daarom dat je WEL die try-catch moet gebruiken...:)
Dat gaat hem daar niet om maar je kan in een boolean maar twee waardes steken: true of false. En je hebt vier mogelijkheden: plus, min, maal, delen. Hoe kan je dat dan doen met switch? Dat kan je ook niet met PHP!
Hetgeen hij had kunnen doen was 1 variabele als string gebruiken, "bewerking" bijvoorbeeld en dan ging dat wel!
Dim bewerking As String
'Als je dan op een knop klikt krijgt "bewerking" de bewerking van die knop en dan kan je zo doen:
Select Case bewerking
Case "plus"
totaal2 = totaal1 + Convert.ToDouble(display.Text)
Case "min"
totaal2 = totaal1 - Convert.ToDouble(display.Text)
Case "maal"
totaal2 = totaal1 * Convert.ToDouble(display.Text)
Case "deel"
totaal2 = totaal1 / Convert.ToDouble(display.Text)
End Select
Dim bewerking AsString
'Als je dan op een knop klikt krijgt "bewerking" de bewerking van die knop en dan kan je zo doen:
public uitrekenen( manier )
{
return totaal1 / Convert.ToDouble(display.Text)
}
// al die ifjes enz. hierzo maar dan ipv die lange code gewoon functie hierboven aanroepen
public uitrekenen( manier )
{
return totaal1 / Convert.ToDouble(display.Text)
}
// al die ifjes enz. hierzo maar dan ipv die lange code gewoon functie hierboven aanroepen
DRY ( DON'T REPEAT YOURSELF )
:cool:
Edit:
En hij kan beter de code herschrijven zodat hij de bewerking in 1 variabele heeft zoals jij het zegt, zodat die ifjes zelfs onnodig zijn heb je weer een aantal regels bespaard.
Private Sub nr0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nr0.Click
if Getkeystate(vbKey0) And KEY_DOWN Then
If verder_nieuw = True Then
display.Clear()
End If
display.Text = display.Text & nr0.Text
verder_nieuw = False
End if
End Sub
PrivateSub nr0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles nr0.Click