摘要:文字说明:在 while 循环内部再创建一个或多个 while 循环,就形成了循环嵌套。这在处理多维数据结构,比如矩阵(二维数组),或者需要进行多层迭代的场景中非常有用。外层循环每执行一次,内层循环都会完整执行一遍。
今天我们接着深入学习 while 循环相关知识,以及引入一些新的与循环紧密相关的内容:
1. while 循环嵌套
- 文字说明:在 while 循环内部再创建一个或多个 while 循环,就形成了循环嵌套。这在处理多维数据结构,比如矩阵(二维数组),或者需要进行多层迭代的场景中非常有用。外层循环每执行一次,内层循环都会完整执行一遍。
- 实际操作演示:
$outerCounter = 1
while ($outerCounter -le 3) {
$innerCounter = 1
while ($innerCounter -le 3) {
Write - Host "外层: $outerCounter, 内层: $innerCounter"
$innerCounter++
}
$outerCounter++
}
在上述代码中,外层 while 循环由 $outerCounter 控制,它从1到3进行迭代。对于外层循环的每一次迭代,内层 while 循环(由 $innerCounter 控制)都会从1到3完整执行一遍。每次迭代都会输出当前外层和内层循环计数器的值。最终输出结果展示了一个 3x3 的组合。
2. while 循环与数组结合
- 文字说明: while 循环可以方便地用于遍历数组,通过循环计数器来访问数组的每个元素。这在需要对数组元素逐个进行复杂操作,而不仅仅是简单的 foreach 遍历场景下很实用。
- 实际操作演示:
$myArray = 10, 20, 30, 40
$index = 0
while ($index -lt $myArray.Length) {
$element = $myArray[$index]
Write - Host "数组元素: $element"
# 这里可以对 $element 进行复杂操作
$index++
}
此代码中,首先定义了一个数组 $myArray 。然后通过 while 循环,利用 $index 作为数组索引,只要 $index 小于数组的长度,就会从数组中取出对应索引的元素并输出。你可以在注释部分添加对每个元素的复杂操作代码。
3. do - while 循环
- 文字说明: do - while 循环是 while 循环的一种变体。它与 while 循环的主要区别在于, do - while 循环会先执行一次循环体,然后再检查条件表达式。这意味着无论条件一开始是否为 $true ,循环体至少会被执行一次。
- 实际操作演示:
$count = 5
do {
Write - Host "计数: $count"
$count--
} while ($count -gt 0)
在这段代码中,首先初始化 $count 为5 。 do 块中的代码会先执行一次,输出“计数: 5”,然后 $count 减1。接着检查 while 条件 $count -gt 0 ,只要条件为 $true ,就会继续执行 do 块中的代码。当 $count 变为0时,条件为 $false ,循环终止。
4. 循环中的错误处理
- 文字说明:在循环执行过程中,可能会因为各种原因(如访问不存在的文件、数据类型不匹配等)发生错误。可以使用 try - catch - finally 结构在循环中进行错误处理,以确保脚本的稳定性和可靠性。
- 实际操作演示:
$numbers = "1", "two", "3"
$index = 0
while ($index -lt $numbers.Length) {
try {
$number = [int]$numbers[$index]
Write - Host "转换后的数字: $number"
} catch {
Write - Host "无法将 '$($numbers[$index])' 转换为数字: $($_.Exception.Message)"
} finally {
$index++
}
}
在这个例子中,数组 $numbers 包含了一些字符串,其中一个不能直接转换为整数。在 while 循环中,尝试将每个数组元素转换为整数。如果转换成功,输出转换后的数字;如果失败, catch 块捕获异常并输出错误信息。无论是否发生错误, finally 块都会将 $index 增加1,以确保循环能够正常推进。
编程练习题
循环嵌套练习:使用 while 循环嵌套打印一个直角三角形,其中外层循环控制行数,内层循环控制每行的星号数量。例如,第一行1个星号,第二行2个星号,依此类推,共打印5行。
数组与循环练习:创建一个包含1到10的数组,使用 while 循环遍历数组,计算数组中所有偶数的和,并输出结果。
do - while 循环练习:编写一个 do - while 循环,提示用户输入一个数字。如果输入的数字小于10,继续提示用户输入;如果输入的数字大于等于10,输出“输入的数字符合要求”。
循环错误处理练习:创建一个包含文件名的数组,其中部分文件名可能不存在。使用 while 循环结合 try - catch - finally 结构,尝试获取每个文件的大小。如果文件不存在,捕获异常并输出错误信息,无论文件是否存在,都继续处理下一个文件名。
来源:轩怡教育