【发布时间】:2017-06-18 19:56:58
【问题描述】:
我正在使用 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
所以我的老师输入了 result += 1 和 number = number -2 我不太明白那部分所以我尝试通过将其更改为来简化它:
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
但我点击“确定”后它一直冻结
有什么建议吗?
【问题讨论】:
-
注意:这不是 VBA,所以我编辑标签说它是 VB.Net。 (我很确定这是正确的。)
-
作为旁注,我会推荐 Option Strict stackoverflow.com/documentation/vb.net/4022/option-strict 和
Dim number = Val(InputBox("Divide number by 2:"))因为 InputBox 返回一个字符串 -
有一个巨大的假设,即数字将是偶数。如果不是,它将是一个循环。也许老师的意思是 > 0 而不是 0。希望如此。
-
你看不懂的那段代码算了2可以从
number中被带走的次数(也写得不好)。假设您输入 6 作为数字。Do..While..Loop应该是Do While (number > 0)。假设您输入 6 作为数字,循环将检查number是否 >0。如果是,则将 1 添加到计数器 (result) 并从number中取出 2。所以现在number=4。循环再次检查该数字 > 0 是否将 1 添加到result并从number中获取 2。现在result=2 和number=2。再次循环,result=3 和number=0. Becausenumber 现在为 0,循环将退出。 -
所以你的最终
result将=3,与6/2 相同。如果你用 5 尝试你老师的未更改代码,你将永远循环,因为number将永远是 0。永远不等于 0。用笔和纸试试。
标签: vb.net visual-studio loops basic