You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB开发中Do循环内使用If语句时如何避免无限循环?

问题根因
  • 你将intFrom < intTo的判断逻辑写在了循环内部,当该条件不成立时,intNum += 1的赋值语句永远不会执行,intNum会始终停留在初始值1,永远无法达到循环终止条件intNum > intTo,因此会陷入无限循环。
  • 按照需求「仅当From数值小于To数值时程序才继续执行」,该条件判断应该放在循环执行前,不需要放到循环内部重复校验。
修复后代码
Dim intFrom As Integer
Dim intTo As Integer
Dim intNum As Integer
' 先校验输入是否为合法整数
If Not Integer.TryParse(txtFrom.Text, intFrom) OrElse Not Integer.TryParse(txtTo.Text, intTo) Then
    MsgBox("请在From和To输入框中输入有效的整数")
    Exit Sub
End If
lstNumbers.Items.Clear()

' 外层判断是否满足执行条件,不满足直接跳过所有逻辑
If intFrom < intTo Then
    ' 此处如果你的需求是从起始值From开始输出,就用intFrom赋值
    ' 如果需求固定从1开始输出,就改回intNum = 1
    intNum = intFrom
    Do
        lstNumbers.Items.Add(intNum)
        intNum += 1
    Loop Until intNum > intTo
End If

End Sub
优化说明
  • 新增了输入合法性校验,避免用户输入非数字内容时,TryParse默认返回0导致逻辑异常。
  • 把大小判断移到循环外部,不满足条件时不会进入循环,彻底解决死循环问题。
  • 修正了原代码中循环起始值固定为1的逻辑偏差,和你需求中「From为起始数值」的要求对齐,如果确实需要从1开始输出,修改intNum的初始值即可。

内容的提问来源于stack exchange,提问作者thatOneGuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:45:04