实例2-19 循环嵌套举例以For...Next为例
该实例实现步骤如下。
1 创建窗体
在本章的项目chapter2中,右键单击解决方案资源管理器中项目名下面对应节的文件夹“控制流程”,在弹出菜单中选择“添加”→“Windows窗体”菜单命令,在弹出的对话框中输入窗体名CycFNextFrm,单击“添加”按钮完成窗体的创建。
2 添加控件
在窗体上添加两个Textbox控件,用于接收用户的输入信息和显示排序结果。
添加两个Label控件对相关信息进行的说明。
在窗体上添加一个Button按钮,用于手动单击按钮时实现对用户输入的10个整数排序。
3 添加代码
本实例由一个窗体组成,名称为CycFNextFrm.vb。
双击按钮,进入该按钮的单击事件代码中,向其中添加代码2-23。
代码2-23 CycFNextFrm.vb
01 Public Class CycFNextFrm 02 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 03 Dim str, str1 As String 04 Dim array(10) As Integer 05 Dim i, j, k, t As Integer 06 str = Me.TextBox1.Text '将Textbox1中所输入的内容赋给字符串变量str 07 For i = 0 To 8 08 str1 = str.Substring(0, str.IndexOf(",")) '获得str中第一个“,” '之前的字符串str1 09 array(i) = CInt(str1.Trim) '将该字符串转换为整数赋给数组 10 str = str.Remove(0, str1.Length + 1) '从字符串str中移除字符串 'str1和其后的“,” 11 Next 'i+1,并回到For循环中 12 array(9) = CInt(str.Trim) '将str中最后一个“,”之后的字符串转换成整数 '赋为数组第9个元素 13 i = 0 14 '从大到小排序数组 15 For i = 0 To 8 16 '将第i+1 个元素和其后的所有元素进行比较,获得其中最大的数,交换到第i+1' 的位置 17 For j = i + 1 To 9 18 If array(i) < array(j) Then 19 t = array(i) 20 array(i) = array(j) 21 array(j) = t 22 End If 23 Next 24 Next 25 str = "" 26 '将排列好的数组各元素连接用“,”为一个字符串,显示在Textbox2上 27 For k = 0 To 8 28 str = str & array(k) & "," 29 Next 30 str = str & array(9)
31 Me.TextBox2.Text = str 32 End Sub 33 End Class
代码2-23的执行步骤如下:
① 第6行代码用来获得用户输入的信息,赋给字符串变量Str;
② 第7行代码判断计数器的值是否满足条件,若满足则执行其下面的语句,若不满足则跳到Next后执行Next下面的代码;该行代码用于依次遍历下标为0到8的数组,方便为其赋值;
③ 第8行和第9行代码用Substring函数获得str中第一个“,”之前的字符串将其转换为整型赋给数组;
④ 第10行代码将第③步获得的字符串和其后的“,”从字符串str中移除;
⑤ 第11行代码将计数器加1,返回到第②步执行;
⑥ 第12行代码将str中最后一个“,”之后的数作为数组最后一个元素;
⑦ 第13行代码值得注意的是,在前面的代码中已将计数器i的值增至8,故在使用它时要对它重新赋值;
⑧ 第15行到第24行代码使用For循环嵌套来排序数组中的元素,将数组中下标在前面的元素与其后的所有元素比较并找到最大的数,换到该下标位置;
⑨ 第27 行到第29 行代码将数组中(除最后一个元素外)的各元素用“,”连接到一个字符串str上;
⑩ 第30行和第31行代码将数组中最后一个元素连接到str上,并将其显示在Textbox2上。
4 运行结果
按F5键,运行程序,结果如图2-26所示。
图2-26 实例2-19运行结果
2.4.4 注释语句和续行符
1.注释语句
如果程序很长很复杂,程序员自己也不能一目了然,这样就要加入注释语句,帮助更清晰、更快速地阅读和理解源代码;而对于要在不同程序员编写的代码基础上进行再次编写的情况,注释更是必不可少的。
注释可以直接追加到程序语句的后面,以单引号(')开始,或者用单引号(')或Rem开始新行,Rem不能在程序语句后注释,也就是只能注释新行。两种注释语句的用法如代码2-24所示。
代码2-24两种注释语句
1. Sub add(ByVal a, ByVal b) ''Sub过程,2个参数a和b 2. MessageBox.Show(a + b) 3. Rem对话框显示a + b的结果 4. End Sub
在代码2-24中,第1行代码的注释用了双引号,是为了看得更清楚,实际起作用的只是最前面的单引号。
第3行代码用了Rem关键字,整行用来注释上面一行代码。
2.续行符
有时候一句代码太长,不拖动平行滚动条往往无法看到一整行代码,代码也不会自动换行,这就需要加入续行符使一行很长的代码可以分两行显示,续行符用(_)来表示,写在上一行代码末尾。
如下代码是计时器控件的Tick事件,为了不使代码过长,使用续行符(_)将一行换成两行来显示。
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e _ As System.EventArgs)Handles Timer1.Tick ''下画线(_)为续行符