双重for循环的格式
for(初始化表达式1; 条件表达式2; 修改初始值表达式3) {
for(初始化表达式4; 条件表达式5; 修改初始值表达式6) {
循环体;
}
}
双重for循环的执行流程
执行表达式1 => 判断表达式2是否成立
=> 若成立,则执行表达式4 => 判断表达式5是否成立
=> 若成立,则执行循环体 => 执行表达式6 => 表达式5是否成立
=> 若不成立,则内层循环结束 => 表达式3 => 表达式2是否成立
=> 若不成立,则外层循环结束
双重for循环的特点
- 外层循环用于控制打印的行数,内层循环用于控制打印的列数,外层循环改一下,内层循环从头到尾跑一圈。
- 在以后的开发中若需要打印多行多列时,需要使用双重循环。
- 多重循环不宜嵌套太多层,否则效率很低。一般到三重循环即可,最常见的就是双重循环
package demo;
/*
编程实现双重for循环的使用
*/
public class ForForTest {
public static void main(String[] args) {
// 1.使用for循环打印5行字符串内容"厉害了我的哥!"
for(int i = 1; i <= 5; i++) {
System.out.println("厉害了我的哥!");
}
System.out.println("------------------------------------");
// 2.使用for循环打印5列字符串内容"厉害了我的哥!"
for(int j = 1; j <= 5; j++) {
System.out.print("厉害了我的哥! ");
}
System.out.println();
System.out.println("------------------------------------");
// 3.使用for循环打印5行5列字符串内容"厉害了我的哥!"
// 外层循环主要用于控制打印的行数
for(int i = 1; i <= 5; i++) {
// 内层循环主要用于控制打印的列数
for(int j = 1; j <= 5; j++) {
System.out.print("厉害了我的哥! ");
}
System.out.println();
}
/*
厉害了我的哥!厉害了我的哥!厉害了我的哥!厉害了我的哥!厉害了我的哥!
厉害了我的哥!厉害了我的哥!厉害了我的哥!厉害了我的哥!厉害了我的哥!
厉害了我的哥! ...
*/
}
}
厉害了我的哥!
厉害了我的哥!
厉害了我的哥!
厉害了我的哥!
厉害了我的哥!
------------------------------------
厉害了我的哥! 厉害了我的哥! 厉害了我的哥! 厉害了我的哥! 厉害了我的哥!
------------------------------------
厉害了我的哥! 厉害了我的哥! 厉害了我的哥! 厉害了我的哥! 厉害了我的哥!
厉害了我的哥! 厉害了我的哥! 厉害了我的哥! 厉害了我的哥! 厉害了我的哥!
厉害了我的哥! 厉害了我的哥! 厉害了我的哥! 厉害了我的哥! 厉害了我的哥!
厉害了我的哥! 厉害了我的哥! 厉害了我的哥! 厉害了我的哥! 厉害了我的哥!
厉害了我的哥! 厉害了我的哥! 厉害了我的哥! 厉害了我的哥! 厉害了我的哥!
案例题目一
使用双重for循环分别打印以下图案
package demo;
/*
编程使用双重for循环打印星星图案
*/
public class ForForStarTest {
public static void main(String[] args) {
// 1.打印第一个星星图案
// 外层循环主要用于控制打印的行数
for(int i = 1; i <= 5; i++) {
// 内层循环主要用于控制打印的列数
for(int j = 1; j <= 5; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("--------------------------------------------");
// 2.打印第二个星星图案
// 外层循环主要用于控制打印的行数
for(int i = 1; i <= 5; i++) {
// 内层循环主要用于控制打印的列数 也就是当前行的列数与当前行的行数是相等关系
for(int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("--------------------------------------------");
// 3.打印第三个星星图案
// 外层循环主要用于控制打印的行数
for(int i = 1; i <= 5; i++) {
// 内层循环主要用于控制打印的列数 也就是当前行的列数与当前行的行数相加为6的关系
for(int j = 1; j <= 6-i; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("--------------------------------------------");
// 4.打印第四个星星图案
// 外层循环主要用于控制打印的行数
for(int i = 1; i <= 5; i++) {
// 控制空格的个数
for(int j = 1; j <= 5-i; j++) {
System.out.print(" ");
}
// 内层循环主要用于控制打印的列数 也就是当前行的列数与当前行的行数为 2*i-1 的关系
for(int j = 1; j <= 2*i-1; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
*****
*****
*****
*****
*****
--------------------------------------------
*
**
***
****
*****
--------------------------------------------
*****
****
***
**
*
--------------------------------------------
*
***
*****
*******
*********
案例题目二
使用双重for循环打印九九乘法表
package demo;
/*
使用双重for循环打印九九乘法表
*/
public class ForForTableTest {
public static void main(String[] args) {
// 1.使用外层for循环控制打印的行数,一共9行
outer:for(int i = 1; i <= 9; i++) {
// 2.使用内层for循环控制打印的列数,最多9列,规律是:与当前行所在的行数相等
for(int j = 1; j <= i; j++) {
// 3.使用两个循环变量来拼接等式
System.out.print(j + "*" + i + "=" + j*i + " ");
// 4.当打印完毕6*6 = 36后结束整个打印
if(6 == j) {
//break; // 主要用于跳出循环,但该关键字只能跳出当前所在的循环
break outer; // 表示可以跳出外层for循环
}
}
System.out.println();
}
}
}
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36