VB Visual Basic 2026 中文教程
第 9 课 · 重复执行

For、While 与 Do 循环

如果一段代码需要执行 10 次、100 次甚至更多次,逐行重复书写显然不合理。循环(Loop)可以让程序按照次数或条件自动重复执行。本课将学习 Visual Basic 中最常用的 For...Next、While...End While、Do While 与 Do Until。

适合:完成第 8 课的初学者建议时间:50–65 分钟实作:数字循环分析器

本课学习目标

  • 理解循环为什么可以减少重复代码。
  • 使用 For...Next 执行已知次数的循环。
  • 使用 Step 控制递增或递减幅度。
  • 使用 While...End While 在条件成立时重复执行。
  • 掌握 Do WhileDo Until
  • 理解“先检查条件”和“执行后再检查条件”的区别。
  • 使用 Exit ForExit Do 提前结束循环。
  • 避免无限循环,并完成一个数字循环分析器。

9.1 为什么需要循环?

循环让同一组代码根据次数或条件自动重复执行,是程序设计最基本的流程控制工具之一。

假设要显示 1 到 5:

lblResult.Text = "1"
lblResult.Text &= Environment.NewLine & "2"
lblResult.Text &= Environment.NewLine & "3"
lblResult.Text &= Environment.NewLine & "4"
lblResult.Text &= Environment.NewLine & "5"

使用 For 循环可以缩短为:

For number As Integer = 1 To 5
    lblResult.Text &= CStr(number) & Environment.NewLine
Next
开始number = 1
执行代码显示 number
增加计数number + 1
检查是否完成否则继续循环

9.2 For...Next:已知重复次数

如果你大致知道循环要执行多少次,For...Next 通常是最清楚的选择。

For counter As Integer = 1 To 5
    lblResult.Text &= "第 " & CStr(counter) & " 次" & Environment.NewLine
Next

这个循环会执行 5 次。每次执行时,counter 都会自动增加 1。

次数counter显示结果
11第 1 次
22第 2 次
33第 3 次
44第 4 次
55第 5 次
counter 只是变量名称 你也可以使用 inumber 或其他合法名称。初学阶段使用具有意义的名称通常更容易阅读。

9.3 使用 Step 改变步长

默认情况下,For 每次增加 1。使用 Step 可以改变递增幅度。

每次增加 2

For number As Integer = 2 To 10 Step 2
    lblResult.Text &= CStr(number) & " "
Next

输出:

2 4 6 8 10

倒数

For number As Integer = 10 To 1 Step -1
    lblResult.Text &= CStr(number) & " "
Next

当起点大于终点时,需要负数 Step 才能递减。

Step 不一定是 1 或 -1 可以使用 Step 5Step -2 等,只要符合程序需求。

9.4 用循环累加数值

循环常常与“累加器”变量一起使用。例如计算 1 到 5 的总和:

Dim total As Integer = 0

For number As Integer = 1 To 5
    total += number
Next

lblResult.Text = "总和:" & CStr(total)

执行过程:

number执行前 total执行 total += number 后
101
213
336
4610
51015

total += number 是:

total = total + number

的简写。

9.5 While...End While:条件成立就继续

如果循环次数不是重点,而是“某个条件成立期间持续重复”,可以使用 While。

Dim number As Integer = 1

While number <= 5
    lblResult.Text &= CStr(number) & Environment.NewLine
    number += 1
End While

执行逻辑是:

检查条件number ≤ 5?
True执行循环代码
改变状态number += 1
回到条件再次检查
一定要让条件有机会变成 False 如果忘记 number += 1,number 会一直保持 1,条件永远成立,就可能产生无限循环。

9.6 Do While...Loop

Do While 与 While 的基本意义很接近:

Dim number As Integer = 1

Do While number <= 5
    lblResult.Text &= CStr(number) & Environment.NewLine
    number += 1
Loop

只要条件为 True,就继续循环。

9.7 Do Until...Loop

Do Until 则可以读成:“一直执行,直到条件成立。”

Dim number As Integer = 1

Do Until number > 5
    lblResult.Text &= CStr(number) & Environment.NewLine
    number += 1
Loop

这里当 number > 5 变成 True 时,循环就结束。

Do While

条件为 True 时继续

例如:只要 number ≤ 5,就继续执行。

Do Until

直到条件为 True 才停止

例如:一直执行,直到 number > 5。

9.8 先检查与后检查循环

Do 循环还有另一种写法:把条件放到 Loop 后面。

Dim number As Integer = 10

Do
    lblResult.Text &= CStr(number) & Environment.NewLine
    number += 1
Loop While number <= 5

虽然一开始 number 已经是 10,不符合“≤ 5”,但循环内容仍然会执行一次,因为条件是在执行后才检查。

前测循环

Do While 条件 ... Loop

先检查条件。初始条件不成立时,可能一次也不执行。

前测循环

Do Until 条件 ... Loop

先检查“是否已经达到停止条件”。

后测循环

Do ... Loop While/Until

先执行一次,再决定是否继续。

9.9 提前结束循环

有时虽然循环还没自然结束,但程序已经找到目标,这时可以提前离开循环。

Exit For

For number As Integer = 1 To 100

    If number = 7 Then
        lblResult.Text = "找到 7"
        Exit For
    End If

Next

Exit Do

Dim number As Integer = 1

Do While number <= 100

    If number = 7 Then
        Exit Do
    End If

    number += 1
Loop

Exit For 只能离开当前 For 循环;Exit Do 用于 Do 循环。

9.10 应该选择哪一种循环?

For...Next已经知道开始值、结束值或大致次数时最自然,例如显示 1 到 100。
While...End While主要围绕条件持续执行,而且希望先检查条件。
Do While同样是条件为 True 时继续,语法结构有时更符合阅读习惯。
Do Until当规则更自然地表达成“直到某条件成立”为止。
Do...Loop While/Until循环内容至少必须执行一次时很适合。
没有唯一“最好的循环” 同一个问题常常可以用不同循环完成。应优先选择最清楚表达程序意图的写法。

9.11 实作:数字循环分析器

建立新的 Windows Forms 项目:

NumberLoopAnalyzer2026

用户输入一个正整数上限,例如 10。程序使用 For 循环显示 1 到该数字、计算总和、统计偶数数量,并显示分析结果。

Number Loop Analyzer 2026
请输入上限:
10
操作:
For 分析While 显示清除
数字:1 2 3 4 5 6 7 8 9 10 总和:55 偶数数量:5

加入以下控件:

控件NameText / 用途
FormForm1Text = 数字循环分析器
TextBoxtxtLimit输入循环上限
ButtonbtnForAnalyzeText = For 分析
ButtonbtnWhileShowText = While 显示
ButtonbtnClearText = 清除
TextBoxtxtOutputMultiline = True;ScrollBars = Vertical;ReadOnly = True

For 分析按钮

Private Sub btnForAnalyze_Click(sender As Object, e As EventArgs) _
    Handles btnForAnalyze.Click

    Dim limit As Integer = CInt(txtLimit.Text)
    Dim total As Integer = 0
    Dim evenCount As Integer = 0
    Dim numberList As String = ""

    For number As Integer = 1 To limit

        numberList &= CStr(number) & " "
        total += number

        If number Mod 2 = 0 Then
            evenCount += 1
        End If

    Next

    txtOutput.Text =
        "数字:" & numberList.Trim() & Environment.NewLine &
        "总和:" & CStr(total) & Environment.NewLine &
        "偶数数量:" & CStr(evenCount)

End Sub

这段代码把前几课的知识组合起来:

  • 第 5 课:变量与 Integer。
  • 第 6 课:Mod 与累加表达式。
  • 第 7 课:If 条件判断。
  • 本课:For 循环重复处理每个数字。

While 显示按钮

Private Sub btnWhileShow_Click(sender As Object, e As EventArgs) _
    Handles btnWhileShow.Click

    Dim limit As Integer = CInt(txtLimit.Text)
    Dim number As Integer = 1
    Dim output As String = ""

    While number <= limit
        output &= CStr(number) & Environment.NewLine
        number += 1
    End While

    txtOutput.Text = output

End Sub

清除按钮

Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
    txtLimit.Clear()
    txtOutput.Clear()
    txtLimit.Focus()
End Sub

9.12 逐步理解 For 分析逻辑

1
读取上限

例如用户输入 10,limit 就是 10。

2
初始化累加变量

total 和 evenCount 从 0 开始,numberList 从空字符串开始。

3
For 从 1 走到 limit

每一次循环都处理当前 number。

4
计算与判断

total 累加当前数字;如果 number Mod 2 = 0,就把偶数计数加 1。

5
循环结束后输出

所有数字都处理完成,才一次把列表、总和和偶数数量显示出来。

9.13 测试几个输入

limit数字总和偶数数量
51 2 3 4 5152
101–10555
1110
本例仍未完成完整输入验证 输入空白、文字或非常不合理的数字仍可能造成问题。第 13 课会用 TryParse 系统处理输入验证。

9.14 什么是无限循环?

无限循环(Infinite Loop)是指循环条件永远不会变成停止状态。

Dim number As Integer = 1

While number <= 5
    txtOutput.Text &= CStr(number)
End While

这里 number 永远是 1,所以 number <= 5 永远为 True。

正确写法必须改变 number:

While number <= 5
    txtOutput.Text &= CStr(number)
    number += 1
End While
如果程序因为错误循环看起来“卡住” 在 Visual Studio 调试时可以停止运行,再检查循环条件和循环变量是否真的会改变。

9.15 初学者常见错误

错误 1

For 的起点与 Step 不合理

例如 10 To 1 却使用默认 Step 1,不会得到预期的倒数。应使用 Step -1

错误 2

While 忘了更新条件变量

条件永远不改变时,可能出现无限循环。

错误 3

累加变量放错位置

如果 total 在循环里面每次都重新设为 0,就无法累计之前的结果。

错误 4

把 Exit For 当 End For

Exit For 是提前离开循环,不是正常结束 For 的结构关键字。For 仍然要以 Next 结束。

9.16 小练习

  1. 在数字循环分析器中加入“奇数数量”。
  2. 加入一个按钮,用 For number = limit To 1 Step -1 显示倒数。
  3. 用 For 显示 2、4、6、8……直到 limit。
  4. 用 Do Until 改写 While 显示按钮。
  5. 加入一个“找到第一个可被 7 整除的数字”示例,并使用 Exit For
  6. 输入 10,手工计算总和与偶数数量,再与程序输出比较。

本课复习

  1. 什么情况下最适合使用 For...Next
  2. Step -1 的作用是什么?
  3. While...End While 会在什么时候停止?
  4. Do WhileDo Until 有什么区别?
  5. 为什么后测 Do 循环至少会执行一次?
  6. Exit ForExit Do 分别做什么?
  7. 什么是无限循环?最常见原因是什么?
  8. 为什么 total 必须在循环开始前初始化,而不是每次循环都重新设为 0?