实例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循环语句的使用。