Home > Blockchain >  If I click the calculate button the program crashes?
If I click the calculate button the program crashes?

Time:03-04

Just for context; I need to calculate the average of 5 numbers located in 5 textboxes. Nummer means number Gemiddelde means average and Bereken means calculate What is causing it to crash?

Private Sub butBereken_Click(sender As Object, e As EventArgs) Handles butBereken.Click
        'Variabelen'
        Dim nummer1 As Decimal = txtNummer1.Text
        Dim nummer2 As Decimal = txtNummer2.Text
        Dim nummer3 As Decimal = txtNummer3.Text
        Dim nummer4 As Decimal = txtNummer4.Text
        Dim nummer5 As Decimal = txtNummer5.Text
        Dim somNummers As Decimal = nummer1   nummer2   nummer3   nummer4   nummer5
        Dim Gemiddelde As String = (somNummers) / 5


        lblGemiddelde.Text = Gemiddelde
        If Gemiddelde < 5.5 Then
            lblGemiddelde.Text = Gemiddelde   " Dit is onvoldoende"
        End If

        If nummer1 = "" Or nummer2 = "" Or nummer3 = "" Or
        nummer4 = "" Or nummer5 = "" Then
            butBereken.Enabled = False
            MessageBox.Show("your mom")
        Else
            butBereken.Enabled = True
        End If

    End Sub

CodePudding user response:

I don't see what would crash the program but check to that the TextBoxes have values before assigning them to numeric variables. A Decimal value will never = "".

Private Sub butBereken_Click(sender As Object, e As EventArgs) Handles butBereken.Click 'Variabelen'

    If Not IsNumeric(txtNummer1.Text) Or _
        Not IsNumeric(txtNummer2.Text) Or _
        Not IsNumeric(txtNummer3.Text) Or _
        Not IsNumeric(txtNummer4.Text) Or _
        Not IsNumeric(txtNummer5.Text) Then
        
        MessageBox.Show ("your mom wants you to fill in all the number boxes")
        Exit Sub
    End If
    Dim nummer1 As Decimal = CDec(txtNummer1.Text)
    Dim nummer2 As Decimal = CDec(txtNummer2.Text)
    Dim nummer3 As Decimal = CDec(txtNummer3.Text)
    Dim nummer4 As Decimal = CDec(txtNummer4.Text)
    Dim nummer5 As Decimal = CDec(txtNummer5.Text)
    Dim somNummers As Decimal = nummer1   nummer2   nummer3   nummer4   nummer5
    Dim Gemiddelde As String = (somNummers) / 5

    lblGemiddelde.Text = Gemiddelde
    If Gemiddelde < 5.5 Then
        lblGemiddelde.Text = Gemiddelde   "Dit is onvoldoende"
    End If

    If nummer1 = 0 Or nummer2 = 0 Or nummer3 = 0 Or nummer4 = 0 Or nummer5 = 0 Then
        butBereken.Enabled = False
        MessageBox.Show ("your mom")
    Else
        butBereken.Enabled = True
    End If

End Sub
 

If this doesn't work I would consider setting breakpoints in the could to determine what line is causing the crash.

If that doesn't work consider adding this line to the form's initialization:

butBereken.Caption = "Warning: Do not Click!"

CodePudding user response:

I'd do something more like:

Private Sub butBereken_Click(sender As Object, e As EventArgs) Handles butBereken.Click
    Dim TBs() As TextBox = {txtNummer1, txtNummer2, txtNummer3, txtNummer4, txtNummer5}
    Dim inputs() As String = TBs.Select(Function(x) x.Text).ToArray()
    Dim values() As Decimal
    Try
        values = Array.ConvertAll(inputs, Function(s) Decimal.Parse(s))
        Dim Gemiddelde As String = values.Average()
        lblGemiddelde.Text = Gemiddelde & If(Gemiddelde < 5.5, " Dit is onvoldoende", "")
    Catch ex As Exception
        MessageBox.Show("your mom")
    End Try
End Sub

CodePudding user response:

Assuming the user populated all the textboxes with numeric only data, (and you have checked this) try replacing these lines in your code with this code

Dim nummer1 As Decimal = txtNummer1.Text
Dim nummer2 As Decimal = txtNummer2.Text
Dim nummer3 As Decimal = txtNummer3.Text
Dim nummer4 As Decimal = txtNummer4.Text
Dim nummer5 As Decimal = txtNummer5.Text
Dim somNummers As Decimal = nummer1   nummer2   nummer3   nummer4   nummer5
Dim Gemiddelde As Decimal = somNummers / 5

lblGemiddelde.Text = Gemiddelde.ToString("##0.0")
  • Related