只接受Do While Loop中的InputBox VB.Net中的Integer值

时间:2018-06-01 14:37:41

标签: vb.net visual-studio-2010 visual-studio-2012

我试图弄清楚为什么我的程序接受非整数值,然后通过舍入将其转换为整数。用户输入的第一个值已经过验证,但其余值不是。我的程序用于计算用户输入的奇数和偶数整数。任何帮助将不胜感激。

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

1 个答案:

答案 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