Zack - 6 months ago 33

Vb.net Question

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

' add the even numbers

' display the result

End Sub

End Class

How can I fix this?

Answer

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
```