2017-06-18 103 views
0

我在Visual Basic中,我通过一些代码段我老师写读书,他有这chunck代码:的Visual Basic将

Private Sub btnDividing_Click(sender As Object, e As EventArgs) Handles btnDividing.Click 
    Dim number As Integer = InputBox("Divide number by 2:") 
    Dim result As Integer = 0 

    Do While (number <> 0) 
     result += 1 
     number = number - 2 
    Loop 
    MsgBox("The result is: " & result, MsgBoxStyle.Exclamation) 

End Sub 

所以我的老师键入结果+ = 1数=号-2我真的不明白那部分,所以我试图将其更改为简化IT:

Dim number As Integer = InputBox("Divide number by 2:") 
    Dim result As Integer = 0 

    Do While (number <> 0) 
     result = number/2 
    Loop 
    MsgBox("The result is: " & result, MsgBoxStyle.Exclamation) 

End Sub 

但它一直在我点击“OK”

012冻结

有什么建议吗?

+0

注意:这不是VBA,所以我编辑标签来说它是VB.Net。 (我相当肯定这将是正确的。) – YowE3K

+0

作为一个方面说明,我会推荐Option Strict https://stackoverflow.com/documentation/vb.net/4022/option-strict和Dim code = Val(InputBox (“Divide number by 2:”))'作为InputBox返回一个字符串 – Slai

+0

有一个巨大的假设,数字将是偶数。如果不是,它将是一个循环。也许老师的意思是> 0而不是<> 0.让我们希望如此。 – dbasnett

回答

2

冻结,因为你来了一个无限循环:

Do While (number <> 0) 
    result = number/2 
Loop 

循环检查的number的价值,但在循环修改后的代码永远不会修改number值。所以如果在第一次检查时条件成立,它总会是真的。原始代码修改的值:

Do While (number <> 0) 
    result += 1 
    number = number - 2 
Loop 

由于number2与循环的每次迭代递减,它最终将(假设它是偶数)是等于0,使得循环条件为假并且循环将结束。

基本上,循环需要以某种方式修改在条件中被检查的值(或者有一些其他控制语句退出循环)或循环将无限运行。