多重循环
1. 死循环
死循环: 循环语句无法正常停止的情况,就被称为死循环。一般都是缺失了循环的出口或者循环条件存在问题。
按理说,死循环并不是一件好事,但是 “功法没有正邪之分,有正邪之分的是使用的人。” 如果被你使用正确,它可以解决很多问题。
适用的场景: 当你不确定,或是确定循环条件及出口时较为困难/麻烦时,可以采用死循环。
while (true) {
}
do {
} while (true);
for (;;) {
}
但无论是死循环也好,还是正常循环,都应该保证有相应出口。我们可以通过循环中的跳转语句,来实现循环流程的控制。
break
continue
break
break:中断
break 在 switch 选择结构中出现过,它当时的意思是结束某个分支。
在循环中,它表示结束当前所在循环,一般还要配合选择结构使用。
continue
continue:继续
只能在循环中使用,它表示结束当前所在循环的本次循环(本次循环中,continue后的所有内容不再执行),跳转到下一次循环开始。
2. 多重循环概述
需求:实现下方图形的打印,通过一颗*
一颗*
的方式来打印。
*****
*****
*****
*****
*****
*
***
*****
*******
*********
*
***
*****
*******
*********
*****
*****
*****
单层循环无法实现稍微复杂些的需求,所以我们需要使用多重循环(嵌套循环),它是一种类似于嵌套 if 的存在。
while (外层循环条件) {
while (内层循环条件) {
}
}
do {
for (内层循环条件) {
}
for (内层循环条件) {
}
} while (外层循环条件);
不同的循环结构之间可以相互嵌套,嵌套多少层、多少个都可以。
但是一般嵌套的层数不要超过3层,因为层数过多,循环结构过于复杂,因小失大。
一般的嵌套都是两层居多,所以多重循环又被称为二重循环/双重循环。
产生循环嵌套之后,会分为外层循环和内层循环,内层循环此时其实就是外层循环的循环操作 。
外层循环执行一次,内层循环执行一遍!
3. 案例实现
3.1 打印矩形图形
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5; j++) {
System.out.print("*");
}
System.out.println();
}
3.2 打印三角形
打印直角三角形:
*
***
*****
*******
*********
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
打印等腰三角形:
*
***
*****
*******
*********
3.3 打印平行四边形
for (int i = 1; i <= 3; i++) {
for (int k = 1; k <= 3 - i; k++) {
System.out.print(" ");
}
for (int j = 1; j <= 5; j++) {
System.out.print("*");
}
System.out.println();
}
3.4 打印九九乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
....
1*9=9 2*9=18 3*9=27 ....
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + (j * i) + "\t");
}
System.out.println();
}