嵌套循环与循环控制

2024-04-02 06:08
文章标签 循环 控制 嵌套循环

本文主要是介绍嵌套循环与循环控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

嵌套循环


嵌套循环就是在一个循环中还有一个循环, 内部循环在外部循环体中. 在外部循环的每次执行过程中都会触发内部循环, 直到内部循环执行结束. 外部循环执行了多少次, 内部循环就完成多少次. 当然, 无论是内部循环还是外部循环的break 语句都会打断处理过程.


例: 嵌套循环.

#!/bin/bash
# 嵌套的for循环.outer=1                     # 设置外部循环计数.# 开始外部循环
for a in 1 2 3 4 5
doecho "Pass $outer in outer loop."echo "--------------------------"inner=1                 # 重置内部循环计数.# 开始内部循环.for b in 1 2 3 4 5doecho "Pass $inner in inner loop."let "inner+=1"      # 增加内部循环计数.done# 内部循环结束.let "outer+=1"          # 增加外部循环的计数.echo
done
#外部循环结束.exit 0

循环控制


影响循环行为的命令 : break, continue.

break和continue这两个循环控制命令与其他语言的类似命令的行为是相同的. break命令用来跳出循环, 而continue命令只会跳过本次循环, 忽略本次循环剩余的代码, 进入循环的下一次迭代 .


例: break和continue命令在循环中的效果.

#!/bin/bash

limit=19    # 上限echo "Printing Numbers 1 through 20 (but not 3 and 11)"
a=0while [ $a -lt "limit" ]
doa=$(($a+1))if [ "$a" -eq 3 ] || [ "$a" -eq 11 ]thencontinuefiecho -n "$a "
done
# 1 2 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20echoa=0while [ "$a" -lt "$limit" ]
doa=$(($a+1))if [ "$a" -gt 2 ]then breakfiecho -n "$a "
done
# 1 2 
echoexit 0

break命令可以带一个参数. 一个不带参数的break命令只能退出最内层的循环, 而break N可以退出 N 层循环.


例: 多层循环的退出.

#/bin/bash
# break N 推出多层循环for a in 1 2 3 4 5                              # break 不带参数运行结果
do                                              #+Group 1: 1 2 3 echo -n "Group $a:  "                       #+Group 2: 1 2 3 
#-------------------------                      #+Group 3: 1 2 3 for b in 1 2 3 4 5                          #+Group 4: 1 2 3 do                                          #+Group 5: 1 2 3 echo -n "$b "if [ "$b" -eq 3 ]thenbreakfidone
#-------------------------echo
doneecho; echofor a in 1 2 3 4 5                             # break 2 运行结果
do                                             #+Group 1: 1 2 3 echo -n "Group $a:  "
#-------------------------for b in 1 2 3 4 5doecho -n "$b "if [ "$b" -eq 3 ]thenbreak 2fidone
#-------------------------echo
doneechoexit 0

continue命令也可以象break命令一样带一个参数. 一个不带参数的continue命令只会去掉本次循环的剩余代码. 而continue N将会把 N 层循环的剩余代码都去掉, 但是循环的次数不变.


这篇关于嵌套循环与循环控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869174

相关文章

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

Spring三级缓存解决循环依赖的解析过程

《Spring三级缓存解决循环依赖的解析过程》:本文主要介绍Spring三级缓存解决循环依赖的解析过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、循环依赖场景二、三级缓存定义三、解决流程(以ServiceA和ServiceB为例)四、关键机制详解五、设计约

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构