Java 循环嵌套
使用说明
所谓嵌套循环:是指一个循环结构A的循环体是另一个循环结构B。比如,for循环里面还有一个for循环,就是嵌套循环。其中,for ,while ,do-while均可以作为外层循环或内层循环。
- 外层循环:循环结构A
- 内层循环:循环结构B
实质上,嵌套循环就是把内层循环当成外层循环的循环体。只有当内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的外层循环。
设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。
技巧:从二维图形的角度看,外层循环控制行数,内层循环控制列数。
开发经验:实际开发中,我们最多见到的嵌套循环是两层。一般不会出现超过三层的嵌套循环。如果将要出现,一定要停下来重新梳理业务逻辑,重新思考算法的实现,控制在三层以内。否则,可读性会很差。
例如:两个for嵌套循环格式
for(初始化语句①; 循环条件语句②; 迭代语句⑦) { for(初始化语句③; 循环条件语句④; 迭代语句⑥) { 循环体语句⑤; } } //执行过程:① - ② - ③ - ④ - ⑤ - ⑥ - ④ - ⑤ - ⑥ - ... - ④ - ⑦ - ② - ③ - ④ - ⑤ - ⑥ - ④..
执行特点:外层循环执行一次,内层循环执行一轮。
应用举例
练习1、打印5行6个*
public static void printxx() { for (int i = 0; i < 5; i++) {//控制行 for (int j = 0; j < 6; j++) {//控制列 System.out.print("*"); } System.out.println(); } }
练习2、打印5行直角三角形
/** * 直角三角形 */ static void printsjx() { for (int i = 1; i <= 5; i++) { for (int j = 1; j <= i; j++) {//控制列 System.out.print("*"); } System.out.println(); } }
案例3:打印5行倒直角三角形
static void printsjxres() { for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 6 - i; j++) {//控制列 System.out.print("*"); } System.out.println(); } }
练习4、打印"菱形"形状的图案
/** * 菱形 */ static void pringlx() { //上半部分 for (int i = 1; i <= 5; i++) { //空格 for (int j = 1; j <= 10 - 2 * i; j++) { System.out.print(" "); } //打印 for (int k = 1; k <= 2 * i - 1; k++) { System.out.print("* "); } System.out.println(); } for (int i = 1; i <= 4; i++) { // for (int k = 1; k <= 2 * i; k++) { System.out.print(" "); } for (int j = 1; j <= 9 - 2 * i; j++) { System.out.print("* "); } System.out.println(); } }
练习5、九九乘法表
static void print99() { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(i + "*" + j + "=" + (i * j) + "\t"); } System.out.println(); } }
练习5、打印一天的时间
static void printTime() { for (int hour = 0; hour < 24; hour++) { for (int min = 0; min < 60; min++) { System.out.println(hour + "时" + min + "分"); } } }