多重循环
1. 死循环
死循环:循环语句无法正常停止的情况,被称为死循环。一般都是缺失了循环的出口或者循环条件存在问题。按理说,死循环并不是一件好事,但是“功法没有正邪之分,有正邪之分的是使用的人。” 如果被你使用正确,它可以解决很多问题。
**适用场景:**当你不确定,或者确定循环条件及出口时较为困难/麻烦时,可以采用死循环。
while (true) {
}
do {
} while (true);
for (;;) {
}
但无论是死循环也好,正常循环,都应该保证相应出口,我们可以通过死循环中的跳转语句来实现循环流程控制。
break
continue
break
break:中断
break 在 switch 选择结构中出现过,它当时的意思是结束某个分支。
在循环中,它表示结束当前所在的循环。一般配合选择结构的使用
continue
continue: 继续
只能在循环中使用,他表示结束当前所在的循环的本次循环(本次循环后下面循环不再执行),跳转到下一次循环开始。
2. 多重循环概述
需求:实现下方图形的打印,通过一颗 *
一颗 *
的方式来打
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5; j++) {
System.out.print("*");
}
System.out.println();
}
*****
*****
*****
*****
*****
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
*
***
*****
*******
*********
for (int i = 1; i <= 5; i++) {
// 打印空格
for (int k = 1; k <= 5 - i; k++) {
System.out.print(" ");
}
// 打印 *
for (int j = 1; j <= 2 * i -1; j++) {
System.out.print("*");
}
// 换行
System.out.println();
}
*
***
*****
*******
*********
*****
*****
*****
单层循环无法实现稍微复杂些的需求,所以我们需要使用多重循环(嵌套循环),它是一种类似于嵌套 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 <= 5; i++) {
// 打印空格
for (int k = 1; k <= 5 - i; k++) {
System.out.print(" ");
}
// 打印 *
for (int j = 1; j <= 2 * i -1; j++) {
System.out.print("*");
}
// 换行
System.out.println();
}
3.4 打印平行四边形
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.5 打印九九乘法表
for (int i = 1; i <= 9; i++) {
for (int k = 1; k <= i; k++) {
System.out.print(k + "*" + i + "=" + (k * i) + "\t");
}
System.out.println();
}