我试图弄清楚为什么我的程序接受非整数值,然后通过舍入将其转换为整数。用户输入的第一个值已经过验证,但其余值不是。我的程序用于计算用户输入的奇数和偶数整数。任何帮助将不胜感激。
Private Sub btnShow_Click(sender As System.Object, e As System.EventArgs) Handles btnAddNum.Click
Dim intInputNum As Integer
Dim strInputNum As String = ""
Dim isEven As Integer = 0
Dim isOdd As Integer = 0
Dim userInput As String = InputBox(("Enter a number (0 to end)"))
Dim numArray() As String = strInputNum.Split(New Char() {","c})
Dim validInput As Boolean = Integer.TryParse(userInput, intInputNum)
If validInput = False Then
MsgBox("Invalid input, integer numbers only")
ElseIf validInput = True Then
Do While intInputNum > 0 And validInput = True
If intInputNum Mod 2 = 0 And validInput = True Then
lblEvenValues.Text = lblEvenValues.Text & CStr(intInputNum) & ","
intInputNum = Val(InputBox("Enter a number (0 to end)"))
isEven = isEven + 1
lblCountEven.Text = isEven
ElseIf intInputNum Mod 2 <> 0 And validInput = True Then
lblOddValues.Text = lblOddValues.Text & CStr(intInputNum) & ","
intInputNum = Val(InputBox("Enter a number (0 to end)"))
isOdd = isOdd + 1
lblCountOdd.Text = isOdd
ElseIf validInput = False Then
MsgBox("Invalid input, integer numbers only")
End If
Loop
End If
End Sub
答案 0 :(得分:-1)
这一行:
Do While intInputNum > 0
导致你的问题。当用户输入非整数值时,在第一个循环之后,此行:Val(InputBox("Enter a number (0 to end)"))
计算为零。
这显然不会大于0。
重用你的boolean语句来评估userInput,而不是intInputNum,如下所示:
userInput = Val(InputBox("Enter a number (0 to end)"))
validInput = Integer.TryParse(userInput, intInputNum)
然后,您需要修改消息框位置,以便只显示在循环外部而不是在循环中。因此,当validInput <> True
时,它会打破循环并输出您的Msgbox
。
您还需要修复Do While
语句以正确评估userInput而不是intInputNum