的Visual Basic将
问题描述:
我在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冻结有什么建议吗?
答
冻结,因为你来了一个无限循环:
Do While (number <> 0)
result = number/2
Loop
循环检查的number
的价值,但在循环修改后的代码永远不会修改的number
值。所以如果在第一次检查时条件成立,它总会是真的。原始代码修改的值:
Do While (number <> 0)
result += 1
number = number - 2
Loop
由于number
由2
与循环的每次迭代递减,它最终将(假设它是偶数)是等于0
,使得循环条件为假并且循环将结束。
基本上,循环需要以某种方式修改在条件中被检查的值(或者有一些其他控制语句退出循环)或循环将无限运行。
注意:这不是VBA,所以我编辑标签来说它是VB.Net。 (我相当肯定这将是正确的。) – YowE3K
作为一个方面说明,我会推荐Option Strict https://*.com/documentation/vb.net/4022/option-strict和Dim code = Val(InputBox (“Divide number by 2:”))'作为InputBox返回一个字符串 – Slai
有一个巨大的假设,数字将是偶数。如果不是,它将是一个循环。也许老师的意思是> 0而不是 0.让我们希望如此。 – dbasnett