![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=1738864536-AcRKK6pEnr0QvzhUkdqmBNnAyWMHMbPH-0-67ba2612966a9abecb5c8197df7af78b)
在上面的表达式中,如果循环表达式成立,就执行循环体中的语句块,否则退出循环体,执行循环体下面的语句。
在写循环语句时,除非特殊要求,都需要能够退出循环,而不能一直在循环体中执行,那样会形成死循环。形成死循环的方式如循环条件永远成立等。如果循环体中的语句块只有一条语句,也可以省略大括号。为了使得程序看起来结构比较清晰,建议不要去掉大括号。while循环的简单使用如示例4-6所示。
【示例4-6】while基本用法
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P65_51812.jpg?sign=1738864536-4qvtIf4JLtozXEr334UOlTrBqIanaqfU-0-e41bd67ebbebc200eb6750eec932d26d)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P66_51814.jpg?sign=1738864536-6gQQODTxBzsB1IQPn5mjcmVTEDROUxt6-0-2ad27947a84f11fd45e143f3aba08b20)
通过示例4-6可以看出,在使用了循环后,可以很方便地进行多次的分数输入和判断输入的分数属于哪个等级,并且在输入-1时退出循环。
4.2.2 do while循环
do while循环的基本格式如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P66_51815.jpg?sign=1738864536-6Pgtd8kfFFfsgJinutX92V5yHEApFicO-0-db2dcc1c74b0a27aff6724df4c004b43)
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=1738864536-FVqjbFjsbURjVovDO6HNkPY0uFTuyq5E-0-ed092c64dd88f482b7bb94af30da3e13)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P67_51818.jpg?sign=1738864536-rOHerzoznBKnbFFxP5IwSPmNCCy4hDcF-0-130c58802458d6816277d204c1e9f664)
在示例程序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=1738864536-g7zmQpOY8DkdBobzENCHdD0h5nZFrBKj-0-2aeb2134948d2e4e3d11c4cd9b6ca322)
在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=1738864536-ift3gZqzVTmhBB1gvKdAc2Fm1hk1MSxQ-0-53131c6b76f3ba3a5c66b9711f76997f)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P68_51821.jpg?sign=1738864536-LxFpcbAxsLIgFy8Ga3eV4NkhXKU5R958-0-a106dad945cc0e31724a5a93bf4a1336)
示例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=1738864536-IucCnfHoBaQHvW2y3Uu2TIPb52qKnVzp-0-ddda95d81a03c8e818c6b845613f1510)
在增强型的for循环中,循环变量一般设置为for循环内部生效的局部变量,并且其类型要与遍历的对象中的元素类型一致。使用方式如示例4-9所示。
【示例4-9】增强型for语句用法
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P68_51823.jpg?sign=1738864536-9mushZoUdk7l5br0OnBniWaw4qq1MZXc-0-97e0727418f5a1d402b66dfafb9c46c0)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P69_51826.jpg?sign=1738864536-ejV728Q4UxYAAxK0gsEqUGAgyDhecNPN-0-fc896d9b6f7400ffd9bd5481359b1c16)
在示例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=1738864536-8p9O4jTqUdqZorYVFIh5tkIXDKnqshf8-0-cabbd68efebb87781b34e3721933bd6d)
for循环嵌套的语法格式如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P69_51829.jpg?sign=1738864536-IBHA2a7FcoswwX5vJhbZWX44xq3VhtvY-0-a88c1ae537732856b005f0f6749008de)
嵌套结构一般是在一个循环中套用另外一个循环,从而达到多重循环的目的。嵌套结构的使用如示例4-10所示。
【示例4-10】循环嵌套打印5×5的星号
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P69_51830.jpg?sign=1738864536-NMOk26ykW3DIiNkLYAEiS5s4wEwMXyZx-0-604c5c5b9a2c3f28ef181aadac2a94e7)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P70_51832.jpg?sign=1738864536-phJDtRGyI8A87wpBLz1BA4PObRNIcovh-0-b38618e3c74dd6bc49f9a3a48286ed57)
在示例4-10中展示了如何使用双重循环控制输出5行5列的星号:外层循环一般用来控制循环次数,内层循环用来控制在每一行中循环输出星号。通过控制每行输出的星号数、空格数等,还可以输出不同的样式,如示例4-11所示。
【示例4-11】循环嵌套打印星号组成三角形
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P70_51833.jpg?sign=1738864536-Fm1GHKHynjKzqxs5YhgPzlRsAxBFrwrP-0-faaa881a00387b53962f19f2c3ee004b)
程序编译后,运行结果如下:
![](https://epubservercos.yuewen.com/96FD95/16499866704817306/epubprivate/OEBPS/Images/Figure-P70_51834.jpg?sign=1738864536-DY1WP7M1Q2VAg9CdZHgz8Efz5958TVAu-0-89228b6c3ae7d6f1573a6bc3b2ecc843)
在示例4-11中输出了一个三角形,外层循环依然控制输出的行数,在内层循环中,首先控制输出的空格数(和行号的关系是空格数=5–行数),再输出星号(和行数的关系是星号数=行数×2+1),从而得到输出结果。