Java编程从零开始学(视频教学版)
上QQ阅读APP看书,第一时间看更新

4.2 循环结构

在进行条件结构的操作中,每次程序运行后都输入一次数据,然后程序就退出了。如果想再次进行数据的输入和程序的验证操作,需要再次运行程序才能完成操作。如果需要多次反复验证,就需要频繁地启动程序。此时需要循环结构,将多次重复执行的操作放在循环体中,就不需要多次运行程序了。

本节将重点介绍Java循环结构形式:while循环、do-while循环、for循环、循环嵌套。

4.2.1 while循环

while循环的基本格式如下:

在上面的表达式中,如果循环表达式成立,就执行循环体中的语句块,否则退出循环体,执行循环体下面的语句。

在写循环语句时,除非特殊要求,都需要能够退出循环,而不能一直在循环体中执行,那样会形成死循环。形成死循环的方式如循环条件永远成立等。如果循环体中的语句块只有一条语句,也可以省略大括号。为了使得程序看起来结构比较清晰,建议不要去掉大括号。while循环的简单使用如示例4-6所示。

【示例4-6】while基本用法

程序编译后,运行结果如下:

通过示例4-6可以看出,在使用了循环后,可以很方便地进行多次的分数输入和判断输入的分数属于哪个等级,并且在输入-1时退出循环。

4.2.2 do while循环

do while循环的基本格式如下:

do while循环方式在执行时,首先执行循环体中的语句块,执行完毕之后再对循环条件进行判断。如果循环条件结果为假,循环就不再执行。如果循环条件的结果为真,就会继续执行循环体中的语句块。由此可以看出,do while循环至少执行一次;而while循环可能一次也不会执行。do while语句的使用如示例4-7所示。

【示例4-7】do while基本用法

程序编译后,运行结果如下:

在示例程序4-7中,使用do while语句取代了while循环语句。在执行操作时,首先进行数据的输入,然后进行等级的划分。都执行完之后,再进行循环条件的判断。当输入-1时,循环结果为false,因此退出循环。

在编程过程中,使用哪种循环语句需要明确最终的需求是什么。根据需要进行什么操作来决定使用哪个循环。

4.2.3 for循环

循环结构中除了使用while语句之外,还有for循环语句。for循环语句常用的语法格式如下:

在for循环中,表达式1的作用是给循环变量初始化,执行一次;表达式2是循环条件,当表达式2结果为true时,循环体中的语句块才会被执行,否则跳出循环体;表达式3的作用一般是改变循环变量的值。其使用方式如示例4-8所示。

【示例4-8】for语句基本用法

程序编译后,运行结果如下:

示例4-8实现了计算从1到100的和。在示例代码中,语句i=1的作用是给循环变量i进行初始化,并将其赋值为1。语句i<101的作用是判断i的值是否小于101,当小于101时就退出循环。在退出循环时,i的数值正好为100。i++的作用是将循环变量i加1,从而使得变量发生变化。最终得到从1到100的和。

在Java编程中,for循环除了上面的常用方式之外,在进行数组的操作时还可以使用增强型for循环的方式。其基本使用方式如下:

在增强型的for循环中,循环变量一般设置为for循环内部生效的局部变量,并且其类型要与遍历的对象中的元素类型一致。使用方式如示例4-9所示。

【示例4-9】增强型for语句用法

程序编译后,运行结果如下:

在示例4-9中展示了如何使用增强型for循环来遍历数组。首先定义了一个字符串数组,里面包含字符串"Java""C++""C#""C""Python"。然后使用增强型for循环来逐个展示数组中的元素。

提示

关于数组的使用方式将在第5章进行介绍。此处可等学习完数组之后再进行学习。

4.2.4 循环嵌套

前面介绍了3种循环方式的基本使用。这些循环一般被称为单层循环。在实际编程过程中,单层循环往往无法满足需求。例如,打印一个10行10列的星号,如果使用单层循环,就需要将输出部分重复编写10次。如果循环的次数更多,那么仅重复编写代码的工作量就会非常大。此时需要使用多重循环(循环的嵌套)来实现这种操作。

while循环嵌套的语法格式如下:

for循环嵌套的语法格式如下:

嵌套结构一般是在一个循环中套用另外一个循环,从而达到多重循环的目的。嵌套结构的使用如示例4-10所示。

【示例4-10】循环嵌套打印5×5的星号

程序编译后,运行结果如下:

在示例4-10中展示了如何使用双重循环控制输出5行5列的星号:外层循环一般用来控制循环次数,内层循环用来控制在每一行中循环输出星号。通过控制每行输出的星号数、空格数等,还可以输出不同的样式,如示例4-11所示。

【示例4-11】循环嵌套打印星号组成三角形

程序编译后,运行结果如下:

在示例4-11中输出了一个三角形,外层循环依然控制输出的行数,在内层循环中,首先控制输出的空格数(和行号的关系是空格数=5–行数),再输出星号(和行数的关系是星号数=行数×2+1),从而得到输出结果。