嵌套循环
所谓嵌套循环,是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。
总共的循环次数=外循环次数 * 内循环次数
外层循环执行每一次、内层循环就会执行多次
【例题1】循环输出时、分、秒
1小时60分钟,1分钟60秒
package com.jinglan.loop;
public class Demo01 {
public static void main(String[] args) {
for (int hour = 0; hour < 24; hour++) {// 小时
for (int minute = 0; minute < 60; minute++) {// 分钟
for (int second = 0; second < 60; second++) {// 秒
System.out.println(hour + "点" + minute + "分" + second + "秒");
}
}
}
}
}
运行结果
太长了!从0时0分0秒到23时59分59秒
温馨提示:你可能会出现代码运行后的控制台上数据显示不全的问题,那是因为控制台显示数据的长度收到了限制
解决方法:Window->Preferences->Run/Debug->Console->取消Limit console output前的复选框。
【例题2】打印出一个5行8列的矩形
外层循环控制行、内层循环控制列
package com.jinglan.loop;
public class Demo01 {
// 外层循环控制行、内层循环控制列
public static void main(String[] args) {
// 用*号打印出一个5行8列的矩形
// 外层循环控制行row、内层循环控制列list
// 打印5行*号,每行8个
for (int row = 1; row < 6; row++) {
for (int list = 1; list < 9; list++) {
// 不换行打印星号
System.out.print("*");
}
// 内循环打印8个星号后,需要一次换行
System.out.println();
}
}
}
运行结果:
对于【例题2】这里做一个详细的执行顺序的解说
从第一个for循环开始执行——》int row = 1;——》row<6满足条件,执行循环体,首先执行循环体中的for循环——》int list=1;——》list<9满足条件,执行System.out.print("");语句生成一个 星号,执行——》list++;此时list=2,依旧满足list<9的循环条件,
执行System.out.print("");语句生成第二个星号…生成第八个星号,执行——》llist++,此时list=9,不满足循环条件,于是内层循环执行结束,程序向下执行System.out.println();语句生成一个空行,后续没有需要执行的代码了,于是row++,此时row=2满足外层循环条件,于是外层for循环继续向下执行——》int row = 2;——》row<6满足条件,执行循环体,首先执行循环体中的for循环——》int list=1;——》list<9满足条件,执行System.out.print("");语句生成一个 星号,执行——》list++;此时list=2,依旧满足list<9的循环条件,执行System.out.print("");语句生成第二个星号…生成第八个星号,执行——》llist++,此时list=9,不满足循环条件,于是内层循环执行结束,程序向下执行System.out.println();语句生成一个空行,后续没有需要执行的代码了,于是row++,此时row=3满足外层循环条件,
…
外层循环结束,完美运行出结果
【例题3】使用循环语句打印出一个10行10列的星号
跟【例题2】原理一样,改变一下数字即可
package com.jinglan.loop;
public class Demo01 {
// 外层循环控制行、内层循环控制列
public static void main(String[] args) {
// 打印出一个10行10列的星号
// 外层循环控制行row、内层循环控制列list
// 打印10行*号,每行10个
for (int row = 1; row < 11; row++) {
for (int list = 1; list < 11; list++) {
// 不换行打印星号
System.out.print("*");
}
// 内循环打印个10星号后,需要一次换行
System.out.println();
}
}
}