Visual Basic.NET+SQL Server全程指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

实例2-16 For Each循环语句的使用

该实例实现步骤如下。

1 创建窗体

在本章的项目chapter2中,右键单击解决方案资源管理器中项目名下面对应节的文件夹“控制流程”,在弹出菜单中选择“添加”→“Windows窗体”菜单命令,在弹出的对话框中输入窗体名ForENFrm,单击“添加”按钮完成窗体的创建。

2 添加代码

打开窗体的代码编辑器,窗体的Load事件中添加代码2-20中的代码。

代码2-20 ForENFrm.vb

        01  Public Class ForENFrm
        02      Private Sub ForENFrm_Load(ByVal sender As System.Object, _
        03      ByVal e As System.EventArgs) Handles MyBase.Load
        04          Dim Array(10), sum As Integer
        05          Dim arrElement As Integer
        06          Dim i As Integer
        07          sum = 0
        08          For i = 1 To 10
        09              Array(i) = i
        10          Next
        11          For Each arrElement In Array
        12              sum = sum + arrElement
        13          Next
        14          MsgBox(sum)
        15      End Sub
        16  End Class

代码2-20的执行步骤如下:

① 第4行到第6行代码定义了一个整型数组和两个整型变量;

② 第7行代码为整型变量sum赋初值0,该变量主要用于存储计算所得和;

③ 第8行到第10行代码通过For Next循环为数组依次赋值为1,2,3,...,10;

④ 第11行到第13行代码使用For Each ...Next循环语句获得数组的值,并将它们相加,求得该数组中所有元素相加的和;

⑤ 第14行代码用弹出对话框显示数组中所有元素之和。

3 运行结果

按F5键,运行程序,弹出如图2-22所示对话框。

图2-22 实例2-16运行结果

3.Do…Loop语句

程序中除了使用For...Next循环外,也可以使用Do循环重复执行一组语句,直到某个条件值为“True”时终止循环。对于事先不知道循环要执行多少次的情况来说,Do循环十分有用和方便。例如,计算全部的订单值,希望用户输入有效的数值作为订单数量。这时,可以使用Do语句来构造一个无穷循环,当用户输入满足要求的条件时退出循环。根据循环条件的放置位置以及计算方式,Do循环有几种格式,其中常用的语法格式如下:

第1种:Do While…Loop,语法如下:

        Do While condition  '条件为True继续执行语句,直到条件为False时停止执行
            statements '执行语句
            [Exit Do] '退出Do循环
        Loop

第2种:Do…Loop While,语法如下:

        Do  '至少执行一次下面的语句
            statements '执行语句
            [Exit Do] '退出Do循环
            statements
        Loop While condition  '条件为False时中止执行

第3种:Do Until…Loop,语法如下:

        Do Until condition  '条件为False继续执行语句,直到条件为True时停止执行
            Statements '执行语句
            [Exit Do] '退出Do循环
        Loop

第4种:Do…Loop Until,语法如下:

        Do
            statements '执行语句
            [Exit Do] '退出Do循环
            statements
        Loop Until condition  '条件为True时中止执行

如果条件为Null,则这个条件被认为是False。例如,下面的Do循环重复处理用户输入,直到用户键入单词“Done”时为止。

        Do While InpName<>"Done"
        inpName=InputBox("Enter your name or type Done to quit.")
        If inpName<>"Done" Then
            Label1.Text=inpName
        End If
        Loop

注意

测试条件的放置位置影响Do循环的执行方式。这个循环中的条件是 InpName<>"Done",相当于“只要 InpName 变量的值不等于单词Done,就一直执行该循环语句”。这表明:当Do循环第一次执行时,如果循环的条件值不是True,那么Do循环中的语句就不会执行。对上面的示例来说,如果在循环开始执行之前(可能在事件过程中使用某个赋值语句进行赋值),InpName 变量的值等于字符串“Done”,那么系统编译器将跳过整个循环体,并在Loop语句后面的语句继续执行。需要注意的是,这种格式的Do循环需要在循环体中写上一条If...Then语句,以避免用户键入的退出值显示出来。如果希望程序中的循环体至少执行一次,那么把条件放置在循环的尾部,示例如下:

        Do
        InpName=InputBox("Enter your name or type Done to quit.")
        If InpName<>"Done" Then
            Label1.Text=InpName
        Loop While InpName<>"Done"

上面的循环与前面介绍的Do循环相似,但是,这里的循环条件在接收了InputBox函数中的姓名后进行测试。这种循环方式的优点是在测试循环条件前更新变量InpName的值,这样,即使InpName在进入循环前的值为“Done”,也不会直接退出循环。在循环的尾部测试条件保证了循环体至少执行一次。但是,一般来说,这种格式的循环体中往往要增加一些额外的数据处理语句。

下面以实例说明Do Loop循环语句的使用。