Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 我的IF语句有什么问题吗?它是数字的_Vb.net_If Statement_Isnumeric - Fatal编程技术网

Vb.net 我的IF语句有什么问题吗?它是数字的

Vb.net 我的IF语句有什么问题吗?它是数字的,vb.net,if-statement,isnumeric,Vb.net,If Statement,Isnumeric,下面的代码揭示了我在理解上的差距。有人能告诉我它是什么以及如何修复代码吗 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim NumberToGuess, Answer As Integer NumberToGuess = InputBox("Enter a Secret Number Between 1 an

下面的代码揭示了我在理解上的差距。有人能告诉我它是什么以及如何修复代码吗

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim NumberToGuess, Answer As Integer
    NumberToGuess = InputBox("Enter a Secret Number Between 1 and 20!")
    While Answer <> NumberToGuess
        Answer = InputBox("Please enter your guess")
        If IsNumeric(Answer) = False Then MsgBox("That ain't no number")
        If Answer > NumberToGuess Then MsgBox("Too high thicko. Try Again")
        If Answer < NumberToGuess Then MsgBox("Too Low chump. Try Again")
    End While
    MsgBox("Well done you guessed the right number")
End Sub
Private子按钮1\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理按钮1。单击
Dim Number猜测,回答为整数
NumberToGuess=InputBox(“输入介于1和20之间的密码!”)
答案是数字猜测
答案=输入框(“请输入您的猜测”)
如果IsNumeric(Answer)=False,那么MsgBox(“那不是数字”)
如果回答>数字猜测,则MsgBox(“厚度太高,请重试”)
如果回答
没什么大不了的-你只是错过了一些
其他的
;)

private子按钮1\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理按钮1。单击
Dim Number猜测,回答为整数
NumberToGuess=InputBox(“输入介于1和20之间的密码!”)
答案是数字猜测
答案=输入框(“请输入您的猜测”)
如果IsNumeric(Answer)=False,那么MsgBox(“那不是数字”)
其他的
如果回答>数字猜测,则MsgBox(“厚度太高,请重试”)
如果回答
问题是,如果你只是这样写,第一个条件就被选中了——如果你没有输入一个数字,消息就会显示出来,下一个条件也会被选中——很明显,你只想在它是一个数字的情况下检查它们。因此,将其包装在
Else
块中


顺便说一句:我不认为
答案缺少值是一个问题,但我现在不能检查(我的Linux发行版上的MonoDevelop在VB.net上有一些问题:(-调试你的代码,看看是否合适)

没什么大不了的-你只是错过了一些
其他的
;)

private子按钮1\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理按钮1。单击
Dim Number猜测,回答为整数
NumberToGuess=InputBox(“输入介于1和20之间的密码!”)
答案是数字猜测
答案=输入框(“请输入您的猜测”)
如果IsNumeric(Answer)=False,那么MsgBox(“那不是数字”)
其他的
如果回答>数字猜测,则MsgBox(“厚度太高,请重试”)
如果回答
问题是,如果你只是这样写,第一个条件就被选中了——如果你没有输入一个数字,消息就会显示出来,下一个条件也会被选中——很明显,你只想在它是一个数字的情况下检查它们。因此,将其包装在
Else
块中


顺便说一句:我不认为
答案缺少值是一个问题,但我现在无法检查(我的Linux发行版上的MonoDevelop在VB.net上有一些问题:(-请调试您的代码以确定是否有问题)

问题是的返回值。
它返回一个字符串,您尝试将其分配给整数变量。
这将强制VB编译器执行从字符串到整数的隐式转换,直到您键入有效的数字,它才起作用,但如果您将inputbox留空,隐式转换将失败并引发
InvalidCastException

如果您使用此命令编译代码,则在生成过程中将捕获此命令。
没有它,您的程序将在作业时崩溃。
同样的问题也存在于NumberToGuess的赋值中

Dim NumberToGuess, Answer As Integer
While True
    Dim input = InputBox("Enter a Secret Number Between 1 and 20!")
    if IsNumeric(input) Then
        NumberToGuess = Convert.ToInt32(input)
        Exit While
    Else
        MsgBox("Not a valid number")
    End If
End While    
While Answer <> NumberToGuess
    Dim result = InputBox("Please enter your guess")
    If IsNumeric(result) = False Then 
       MsgBox("That ain't no number")
    Else
       Answer = Convert.ToInt32(result)
       If Answer > NumberToGuess Then MsgBox("Too high thicko. Try Again")
       If Answer < NumberToGuess Then MsgBox("Too Low chump. Try Again")
    End If
End While
MsgBox("Well done you guessed the right number")
Dim NumberToGuess,回答为整数
虽然是真的
Dim input=InputBox(“输入介于1和20之间的密码!”)
如果是数字(输入),则
NumberToGuess=Convert.ToInt32(输入)
退出时
其他的
MsgBox(“不是有效数字”)
如果结束
结束时
答案是数字猜测
Dim结果=输入框(“请输入您的猜测”)
如果IsNumeric(result)=False,则
MsgBox(“那不是数字”)
其他的
答案=将.ToInt32转换为(结果)
如果回答>数字猜测,则MsgBox(“厚度太高,请重试”)
如果回答

我还应该补充一点,中的答案正确地指向了逻辑代码流中的错误。

问题在于的返回值。
它返回一个字符串,您尝试将其分配给整数变量。
这将强制VB编译器执行从字符串到整数的隐式转换,直到您键入有效的数字,它才起作用,但如果您将inputbox留空,隐式转换将失败并引发
InvalidCastException

如果您使用此命令编译代码,则在生成过程中将捕获此命令。
没有它,您的程序将在作业时崩溃。
同样的问题也存在于NumberToGuess的赋值中

Dim NumberToGuess, Answer As Integer
While True
    Dim input = InputBox("Enter a Secret Number Between 1 and 20!")
    if IsNumeric(input) Then
        NumberToGuess = Convert.ToInt32(input)
        Exit While
    Else
        MsgBox("Not a valid number")
    End If
End While    
While Answer <> NumberToGuess
    Dim result = InputBox("Please enter your guess")
    If IsNumeric(result) = False Then 
       MsgBox("That ain't no number")
    Else
       Answer = Convert.ToInt32(result)
       If Answer > NumberToGuess Then MsgBox("Too high thicko. Try Again")
       If Answer < NumberToGuess Then MsgBox("Too Low chump. Try Again")
    End If
End While
MsgBox("Well done you guessed the right number")
Dim NumberToGuess,回答为整数
虽然是真的
Dim input=InputBox(“输入介于1和20之间的密码!”)
如果是数字(输入),则
NumberToGuess=Convert.ToInt32(输入)
退出时
其他的
MsgBox(“不是有效数字”)
如果结束
结束时
答案是数字猜测
Dim结果=输入框(“请输入您的猜测”)
如果IsNumeric(result)=False,则
MsgBox(“那不是数字”)
其他的
答案=将.ToInt32转换为(结果)
如果回答>数字猜测,则MsgBox(“厚度太高,请重试”)
如果回答
我还要补充一点,我的回答是正确的
 Dim NumberToGuess, Answer As Integer
        NumberToGuess = InputBox("Enter a Secret Number Between 1 and 20!")
        While Answer <> NumberToGuess
            Answer = InputBox("Please enter your guess")
            If IsNumeric(Answer) = False Then
                MsgBox("That ain't no number")
            Else
                Select Case Answer < NumberToGuess
                    Case True
                        MsgBox("Too Low chump. Try Again")
                    Case False
                        MsgBox("Too high thicko. Try Again")
                    Case Else
                        MsgBox("Well done you guessed the right number")
                End Select
            End If
        End While
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim NumberToGuess As String    '<-- declare as string because we will hold the result of InputBox in it.
    Dim Answer As String = ""      '<-- declare as string because we will hold the result of InputBox in it.

    NumberToGuess = InputBox("Enter a Secret Number Between 1 and 20!")
    While Answer <> NumberToGuess
        Answer = InputBox("Please enter your guess")
        If String.IsNullOrEmpty(Answer) Then Exit While '<-- if user pressed cancel button in InputBox.
        If Not IsNumeric(Answer) Then
            MsgBox("That ain't no number")
        ElseIf CInt(Answer) > CInt(NumberToGuess) Then
            MsgBox("Too high thicko. Try Again")
        ElseIf CInt(Answer) < CInt(NumberToGuess) Then
            MsgBox("Too Low chump. Try Again")
        Else
            ' neither less nor more. so this is the correct answer.
            MsgBox("Well done you guessed the right number")
            Exit While
        End If
    End While
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim NumberToGuess As String    '<-- declare as string because we will hold the result of InputBox in it.
    Dim Answer As String = ""      '<-- replace with whatever answer you are expecting.
    Dim Message As String = "Please enter your guess"

    NumberToGuess = InputBox("Enter a Secret Number Between 1 and 20!")
    While Answer <> NumberToGuess
        Answer = InputBox(Message)
        If String.IsNullOrEmpty(Answer) Then Exit While '<-- if user pressed cancel button in InputBox.
        If Not IsNumeric(Answer) Then
            Message = "That ain't no number"
        ElseIf CInt(Answer) > CInt(NumberToGuess) Then
            Message = "Too high thicko. Try Again"
        ElseIf CInt(Answer) < CInt(NumberToGuess) Then
            Message = "Too Low chump. Try Again"
        Else
            ' neither less nor more. so this is the correct answer.
            MsgBox("Well done you guessed the right number")
            Exit While
        End If
    End While
End Sub