![Java编程从零开始学(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/137/29977137/b_29977137.jpg)
4.2 循环结构
在进行条件结构的操作中,每次程序运行后都输入一次数据,然后程序就退出了。如果想再次进行数据的输入和程序的验证操作,需要再次运行程序才能完成操作。如果需要多次反复验证,就需要频繁地启动程序。此时需要循环结构,将多次重复执行的操作放在循环体中,就不需要多次运行程序了。
本节将重点介绍Java循环结构形式:while循环、do-while循环、for循环、循环嵌套。
4.2.1 while循环
while循环的基本格式如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P65_51811.jpg?sign=1738821080-RtPJmkvXnSo3SQ8FEpzjVAvu6LvrEASn-0-cf6a7e0aca8cacc9f36f46af77edd153)
在上面的表达式中,如果循环表达式成立,就执行循环体中的语句块,否则退出循环体,执行循环体下面的语句。
在写循环语句时,除非特殊要求,都需要能够退出循环,而不能一直在循环体中执行,那样会形成死循环。形成死循环的方式如循环条件永远成立等。如果循环体中的语句块只有一条语句,也可以省略大括号。为了使得程序看起来结构比较清晰,建议不要去掉大括号。while循环的简单使用如示例4-6所示。
【示例4-6】while基本用法
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P65_51812.jpg?sign=1738821080-iHMUWBsQfgIJophzH68pI8C5dIUWOPUQ-0-2669e47af36d36487593e0c34bb36edc)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P66_51814.jpg?sign=1738821080-tSyUva2uvJIoiEbNuQO6c6fYrGpYBn0H-0-73d5c4ffd53001edfd6c2bb1605a5138)
通过示例4-6可以看出,在使用了循环后,可以很方便地进行多次的分数输入和判断输入的分数属于哪个等级,并且在输入-1时退出循环。
4.2.2 do while循环
do while循环的基本格式如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P66_51815.jpg?sign=1738821080-36UoQqBD4vOxtGglj3FSB1bEHWVlVwya-0-9baf0d7960d9a2d06d3e52d93e6e213e)
do while循环方式在执行时,首先执行循环体中的语句块,执行完毕之后再对循环条件进行判断。如果循环条件结果为假,循环就不再执行。如果循环条件的结果为真,就会继续执行循环体中的语句块。由此可以看出,do while循环至少执行一次;而while循环可能一次也不会执行。do while语句的使用如示例4-7所示。
【示例4-7】do while基本用法
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P66_51816.jpg?sign=1738821080-qg7kOYkuV02iIFwoVksjTNtenQZYHNEm-0-2dc3d3fb7873f3e6823c10cfe90366b4)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P67_51818.jpg?sign=1738821080-qObUu2gZgezXco2tTrQiGpsE7LW1igVW-0-a1390c1471a6d25e7b46102c785eea67)
在示例程序4-7中,使用do while语句取代了while循环语句。在执行操作时,首先进行数据的输入,然后进行等级的划分。都执行完之后,再进行循环条件的判断。当输入-1时,循环结果为false,因此退出循环。
在编程过程中,使用哪种循环语句需要明确最终的需求是什么。根据需要进行什么操作来决定使用哪个循环。
4.2.3 for循环
循环结构中除了使用while语句之外,还有for循环语句。for循环语句常用的语法格式如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P67_51819.jpg?sign=1738821080-G2H8MVouy3Yka96GLJaTncNxIuC4UISX-0-30bba4be2d0bdc904d7cfbba9fb92dd4)
在for循环中,表达式1的作用是给循环变量初始化,执行一次;表达式2是循环条件,当表达式2结果为true时,循环体中的语句块才会被执行,否则跳出循环体;表达式3的作用一般是改变循环变量的值。其使用方式如示例4-8所示。
【示例4-8】for语句基本用法
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P68_51820.jpg?sign=1738821080-VrcpkCuHz9wgI7h1o4aNjJXARsJaLtkW-0-dd26f1658452385373d23b77b42b9834)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P68_51821.jpg?sign=1738821080-AUgyuRVpRvPp0XB5b3OOMqu0Q3fXdTdb-0-3364adebed289538d4cc6d5024fa8bf5)
示例4-8实现了计算从1到100的和。在示例代码中,语句i=1的作用是给循环变量i进行初始化,并将其赋值为1。语句i<101的作用是判断i的值是否小于101,当小于101时就退出循环。在退出循环时,i的数值正好为100。i++的作用是将循环变量i加1,从而使得变量发生变化。最终得到从1到100的和。
在Java编程中,for循环除了上面的常用方式之外,在进行数组的操作时还可以使用增强型for循环的方式。其基本使用方式如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P68_51822.jpg?sign=1738821080-XWFcr0tjBkwf9yA42RaE2bpxYUr7gjq2-0-0a5870b303ff1f80e30d1f8eaac9814e)
在增强型的for循环中,循环变量一般设置为for循环内部生效的局部变量,并且其类型要与遍历的对象中的元素类型一致。使用方式如示例4-9所示。
【示例4-9】增强型for语句用法
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P68_51823.jpg?sign=1738821080-BTJPo65Ra5oV4w3xNXjr9A7bltKWmbw6-0-8ac70650be3ad3a9439403c8f852c60f)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P69_51826.jpg?sign=1738821080-OWMJIz5Uv2Jyk3Z55al2BHSLqS6tOdj6-0-1ec987e875938d6304c2fcc14eda0330)
在示例4-9中展示了如何使用增强型for循环来遍历数组。首先定义了一个字符串数组,里面包含字符串"Java""C++""C#""C""Python"。然后使用增强型for循环来逐个展示数组中的元素。
提示
关于数组的使用方式将在第5章进行介绍。此处可等学习完数组之后再进行学习。
4.2.4 循环嵌套
前面介绍了3种循环方式的基本使用。这些循环一般被称为单层循环。在实际编程过程中,单层循环往往无法满足需求。例如,打印一个10行10列的星号,如果使用单层循环,就需要将输出部分重复编写10次。如果循环的次数更多,那么仅重复编写代码的工作量就会非常大。此时需要使用多重循环(循环的嵌套)来实现这种操作。
while循环嵌套的语法格式如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P69_51828.jpg?sign=1738821080-oGEabZAhNFLGSNQxsjdl7SUraPxNXEjQ-0-958525c70d7c245790b45d9c0bf397a9)
for循环嵌套的语法格式如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P69_51829.jpg?sign=1738821080-0iyoZbyzl8RDecUZt6Wy7RyiPZ8B3nRk-0-7763937caf795542a28898d7048eec4d)
嵌套结构一般是在一个循环中套用另外一个循环,从而达到多重循环的目的。嵌套结构的使用如示例4-10所示。
【示例4-10】循环嵌套打印5×5的星号
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P69_51830.jpg?sign=1738821080-BoBTxRH7zZhADiZz8eFoqq1wZWNMpdhZ-0-61db84b62873b71dc100dca6d0bd530c)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P70_51832.jpg?sign=1738821080-BcTj5IviQoK2XtQdVd6Ipg2oZSl3ROwe-0-e6c1f8a4826d6be3113c6f4902150b4a)
在示例4-10中展示了如何使用双重循环控制输出5行5列的星号:外层循环一般用来控制循环次数,内层循环用来控制在每一行中循环输出星号。通过控制每行输出的星号数、空格数等,还可以输出不同的样式,如示例4-11所示。
【示例4-11】循环嵌套打印星号组成三角形
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P70_51833.jpg?sign=1738821080-zP9CWC4L8w9lCaEkimuMtOco3ZqPPBOh-0-8531ac9784c200de7ceb9e55af38bda3)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P70_51834.jpg?sign=1738821080-mBvXBhq00fkUpAcbOSNn9LMQCaOPD4lT-0-01948ffc25a13e85633da6989b99372c)
在示例4-11中输出了一个三角形,外层循环依然控制输出的行数,在内层循环中,首先控制输出的空格数(和行号的关系是空格数=5–行数),再输出星号(和行数的关系是星号数=行数×2+1),从而得到输出结果。