在Java语言中,允许循环当中再次出现循环。这种“循环套循环”的结构被称为嵌套循环。Java语言并没有限制循环嵌套的层数,所以循环可以实现无限层次的嵌套。此外,循环的嵌套也与循环的类型无关,因此任意两种循环都可以相互嵌套。
当嵌套循环在运行时,内层循环全部执行完毕外层循环才完成1次执行,而虚拟机每次执行外层循环时,内层循环都会重新从头执行。下面以打印二维数组元素为例来帮助各位读者理解嵌套循环的运行原理。在3.2小节中曾经讲过:二维数组是由多个一维数组构成的,而一维数组中又包含多个元素。因此,用嵌套循环打印二维数组的基本原理就是:内层循环负责打印一维数组的每一个元素,外层循环负责让打印一维数组元素的操作执行多次。以下是用嵌套循环打印二维数组的完整代码:
【例03_10使用嵌套循环打印二维数组全部元素】
Exam03_10.java
public class Exam03_10 {
public static void main(String[] args) {
//定义二维数组表示学生身高
double[][] height = {
{ 1.56, 1.55, 1.58, 1.61, 1.63 }, // 第1个一维数组
{ 1.64, 1.67, 1.68, 1.71, 1.74 }, // 第2个一维数组
{ 1.77, 1.79, 1.81, 1.83, 1.85 } // 第3个一维数组
};
for (int i = 0; i < height.length; i++) {// 外层循环控制打印多少个一维数组
for (int j = 0; j < height[i].length; j++) {// 内层循环打印一维数组的每一个元素
System.out.print(height[i][j] + "\t");
}
System.out.println();// 换行
}
}
}
3.2小节曾经讲过:二维数组的length属性表示这个二维数组总共有多少行,因此外层循环中以“i<height.length”作为循环条件来控制打印行数,而height[i]表示二维数组中下标为i的那个一维数组,因此内层循环中以“j<height[i].length”作为循环条件来控制打印一维数组元素的个数。内层循环中的“height[i][j]”就表示了当前被打印的数组元素。在打印数组元素时,使用了不换行的print()方法,这样使得每个一维数组中的元素都会被打印到控制台的同一行上。在print()方法中,每次打印数组元素之后还会打印一个“\t”,这个“\t”表示制表符,如果读者不理解制表符的概念,可以暂时先把它当作一个空格看待,它可以使被打印到控制台上的元素之间出现空隙。每打印一行元素之后都会用println()方法完成换行操作。
【例03_10】的运行结果为:
1.56 1.55 1.58 1.61 1.63
1.64 1.67 1.68 1.71 1.74
1.77 1.79 1.81 1.83 1.85
通过这个打印结果可以很明显的看出:内层循环只有全部执行完毕后外层循环才会进入下一轮,并且外层循环每执行一次时,内层循环都会重新从头执行。
嵌套循环不仅仅可以用来打印二维数组,它在实际开发过程中还有很多其他应用,下面就来讲解一个使用循环嵌套打印九九乘法表的例子。九九乘法表的格式如下:
1×1=1 2×1=2 2×2=4 3×1=3 3×2=6 3×3=9 …………. 9×1=9 9×2=18 9×3=27 9×4=36 …………9×9=81 |
九九乘法表中公有9行,每一行中都包含多个式子。每个式子中,“×”左边的数字都与行数相同,比如在第3行的所有式子中,“×”左边的数字都是3。另外,每个式子“×”右边的数字都与该式子在本行中的排位相等,比如在任意一行中,排第2位的式子“×”右边的数字都是2。进一步观察不难发现:某一行中式子的个数又与它所在的行数相同,也就是说:第1行中有1个式子,第2行中有2个式子...以此类推,第9行中有9个式子。如果用嵌套循环打印九九乘法表,可以用内层循环完成打印式子的操作,用外层循环控制总共要打印多少行式子。而内层循环执行的次数又取决于第几次执行外层循环。也就是说:第1次执行外层循环时,内层循环执行1次,而第2次执行外层循环时,内层循环执行2次...以此类推,第9次执行外层循环时,内层循环执行9次。以下是使用嵌套循环打印九九乘法表的完整代码:
【例03_11使用嵌套循环打印二维数组全部元素】
Exam03_11.java
public class Exam03_11 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {// 外层循环控制打印多少行
for (int j = 1; j <= i; j++) {// j<=i表明第几次执行外层循环就打印几个式子
System.out.print(i + "×" + j + "=" + i * j + "\t");// 打印式子
}
System.out.println();// 换行
}
}
}
除此文字版教程外,小伙伴们还可以点击这里观看我在本站的视频课程学习Java。
标签:外层,第三章,打印,嵌套循环,循环,数组,式子 From: https://blog.51cto.com/mugexuetang/5978701