Zack - 1 month ago 9
Vb.net Question

# Display the sum of the even numbers between two integers

I have a Visual Basic program that expects two integers from the user.

I need tobe able to display the sum of the even numbers between the two integers entered
by the user. If the user's entry is even, it should be included in the sum.

I am having trouble figuring out the algorithm.

Here is my code:

``````Public Class frmMain

Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
Me.Close()
End Sub

Private Sub txtFirstNum_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtFirstNum.KeyPress
' allows the text box to accept only numbers, and the Backspace key

If (e.KeyChar < "0" OrElse e.KeyChar > "9") AndAlso
e.KeyChar <> ControlChars.Back Then
e.Handled = True
End If
End Sub

Private Sub txtSecondNum_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtSecondNum.KeyPress
' allows numbers and Backspace only

If (e.KeyChar < "0" OrElse e.KeyChar > "9") AndAlso
e.KeyChar <> ControlChars.Back Then
e.Handled = True
End If
End Sub

Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click
' display the sum of even numbers

' declarations
Dim intFirstNum As Integer
Dim intSecondNum As Integer

' convert string to number with TryParse method
Integer.TryParse(txtFirstNum.Text, intFirstNum)
Integer.TryParse(txtSecondNum.Text, intSecondNum)

' find the even numbers
If intFirstNum Mod 2 = 0 Then

ElseIf intFirstNum Mod 2 = 1 Then

End If

' display the result

End Sub
End Class
``````

How can I fix this?

You can calculate how many even numbers there are, and from that calculate the sum:

``````' adjust the numbers to the closest even number
If (intFirstNum mod 2) = 1 Then intFirstNum += 1
If (intSecondNum mod 2) = 1 Then intSecondNum -= 1

' determine how many even numbers there are in the range
Dim count As Integer = (intSecondNum - intFirstNum) \ 2 + 1

' the sum is the average times the count
Dim sum As Integer = (intFirstNum + intSecondNum) * count \ 2
``````

The `TryParse` methods returns a boolean, which tells you if it was possible to parse the string. You shouldn't ignore the return value, so use it as:

``````If Integer.TryParse(txtFirstNum.Text, intFirstNum) Then
' yes, it was a number
End If
``````