【问题标题】:Only accept Integer values from InputBox VB.Net within Do While Loop在 Do While 循环中仅接受来自 InputBox VB.Net 的整数值
【发布时间】:2018-06-01 14:37:40
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    这一行:

    Do While intInputNum &gt; 0

    正在给您带来问题。当用户输入一个非整数值时,在第一个循环之后,此行:Val(InputBox("Enter a number (0 to end)")) 的计算结果为零。 显然不大于0。

    重用您的布尔语句来评估 userInput,而不是像这样的 intInputNum:

    userInput = Val(InputBox("Enter a number (0 to end)")) validInput = Integer.TryParse(userInput, intInputNum)

    然后,您需要修复消息框的位置,以便简单地显示在循环之外而不是循环中。因此,当validInput &lt;&gt; True 时,它将打破循环并输出您的Msgbox

    您还需要修复 Do While 语句以正确评估 userInput 而不是 intInputNum

    【讨论】:

    • 我强烈建议不要使用 Console.WriteLine(或消息框)进行调试。 Visual Studio 有许多很棒的调试工具,从断点开始,您可以单步执行代码并查看变量的值。如果必须,请使用 Debug.Print。然后,如果您在发布程序时忘记将其取出,最终用户将看不到您的调试。
    • @Mary 删除我的评论,让您的评论更显眼。事先没有对控制台进行研究。它对 GUI 应用程序的影响几乎没有那么大,但如果你完全按照这条路线使用 Debug.Print 来达到同样的目的,那么你是对的。
    猜你喜欢
    • 1970-01-01
    • 2021-11-28
    • 2015-12-04
    • 2020-05-07
    • 2020-03-19
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多