
4.3.1 循环嵌套的应用
什么是循环嵌套呢?很简单,就是在循环活动的循环体Body内再拖入一个循环活动,来解决某些复杂的逻辑。
例如,某公司有5个生产部门,每个部门都需要循环导出财务数据和库存报表数据。这样就需要在循环生产部门里面再嵌套一层循环财务系统和库存系统的动作,才能顺利实现流程自动化。
本节我们利用输出九九乘法口诀的经典嵌套案例来进行讲解。
首先进行案例分析。九九乘法口诀表如图4-77所示,横向是9个单元格,纵向也是9格单元格,把单元格全部填充就需要9×9=81次的写入动作。这里如果我们做一个嵌套循环,外层控制写入行,内层控制写入列,是不是很容易实现写入81个单元格相对应的内容呢?如果只让程序输出灰色区域的内容呢?具体实现过程见例4.10。

图4-77 乘法口诀表
【例4.10】输出九九乘法口诀。
1)进入Studio界面,点击Process创建一个流程,命名为“4_10_九九乘法口诀”,如图4-78所示。

图4-78 新建流程
2)打开Main,拖入一个For Each活动,按如图4-79所示更改其属性值。

图4-79 拖入For Each活动并设置属性值
3)选中For Each控件,新建一个Int32类型的变量j,Default值为1,用于控制每行的输入次数。新建一个String类型的变量Result,用于存储乘法口诀字符串,如图4-80所示。

图4-80 新建变量
4)在For Each的Body内拖入一个Assgin,每次外层循环执行时对j的值初始化为1,然后在其下面拖入一个While活动,Condition的条件设置为j<=9,如图4-81所示。

图4-81 拖入内层循环While活动
5)在内层循环While的Body中拖入两个Assign,按图4-82进行赋值,设置j=j+1,用于控制层循次数,设置Result=Result+j.ToString+"*"+i.ToString+"="+(i*j).ToString+" ",用于累计乘法口诀表。
6)在内层循环While的下面,拖入一个Assign,设置Result=Result+Environment.NewLine,用于乘法口诀的换行,如图4-83所示。

图4-82 在内层循环中对变量Result和j进行赋值
7)在For Each的下面拖入一个Write Line将Result结果进行输出,如图4-84所示。

图4-83 输入换行符

图4-84 在外层循环For Each的下面拖入Write Line
8)点击Run File执行程序,在Output面板中显示结果如图4-85所示。

图4-85 执行结果
9)如果想要输出更美观,去掉重复,只显示下半部分,只需要将While的Condition条件改为j<=i即可,如图4-86所示,这里大家可以思考下为什么这么做。
10)点击Run File,执行程序,在Output面板中显示结果如图4-87所示。

图4-86 修改内层循环While的条件

图4-87 优化输出结果