目录
练习3:直角三角形 (利用for循环,打印出显现在左边的直角三角形)
将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for、while、do...while 均可以作为外层循环或内层循环。
实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。
设外层循环次数为m次,内层为n次,则内层循环体实质上需要执行m*n次。
通俗讲就是,存在至少2层for循环,根据外层的条件,判断里层能否执行;如果能执行,就把里层代码都循环完毕后,再继续判断是否执行外层循环的下一次循环。
-
- class ForForTest{
- public static void main(String[] args) {
- //九九乘法表
- for(int i = 1;i <= 9;i++){
- for(int j = 1;j <= i;j++){
- System.out.print(i + "*" + j + "=" + i*j + " ");
- }
- System.out.println(); //换行
- }
- }
- }
快捷键 Ctrl + Shift + F10 运行,控制器输出
- class PrimeNuberTest{
- public static void main(String[] args) {
- boolean isFlag = true; //标识是否被除尽,一旦除尽,修改其值。
- for (int i = 2; i <= 100; i++) { //遍历100以内的自然数
- for (int j = 2; j < i; j++) { //j:被i去除 这里写 j < i/2 会更好
- if (i % j == 0) { //i被j除尽
- isFlag = false;
- }
- }
- if(isFlag == true){
- System.out.println(i);
- }
- //重置isFlag
- isFlag = true;
- }
- }
- }
快捷键 Ctrl + Shift + F10 运行,控制器输出
需要注意的是:在内循环中,需要修改内循环的循环条件,让 j 的最大值随着 i 改变,否则这内循环就成了写死的状态了。
- //行1星1 *
- //行2星2 * *
- //行3星3 * * *
- //行4星4 * * * *
- //行i星i * * * * *
-
-
- class TestForTriangle {
- public static void main(String[] args) {
- for(int i = 1;i<6;i++) {//外循环
- for (int j = 1; j <=i; j++) {//内循环
-
- //注意:需要修改内循环的循环条件,让j的最大值随着i改变,否则写死了
- System.out.print("*");//在同一轮/同一行打印不换行
- }
- System.out.println();//空白行用来换行
- }
- }
- }
控制器输出打印
语法:
{
......
break;
......
}
- public class Testapp1 {
- public static void main(String[] args) {
- // 外循环,循环5次
- for (int i = 0; i < 5; i++) {
- System.out.print("第" + (i + 1) + "次循环:");
- // 内循环,设计为循环10次
- for (int j = 0; j < 10; j++) {
- // 判断j是否等于3,如果是,则终止循环
- if (j == 3) {
- break;
- }
- System.out.print("内循环的第" + (j + 1) + "次循环\t");
- }
- System.out.println();
- }
- }
- }
运行输出:
- public class Testapp1 {
- public static void main(String[] args) {
-
- for (int i = 1; i < 10; i++) {
- if (i%3 == 0) {
- continue;
- //这里写代码编译会报错
- }
- System.out.println(i);
- }
-
- }
- }
运行输出:
return :并非专门用于结束循环的,它的功能是结束一个方法,当一个方法执行到一个return语句时,这个方法将被结束。
与break 和 continue 不同的是,return 直接结束整个方法,不管这个return 处于多少层循环之内。
- public class Testapp1 {
- public static void main(String[] args) {
- // 外循环,循环5次
- // 循环 打印 1-10 如果是3的倍数,则不打印
- for (int i = 1; i < 10; i++) {
- if (i%3 == 0) {
- //continue;
- return; //直接退出main函数
- }
- System.out.println(i);
- }
-
- }
- }
运行输出:
break 只能用于switch 语句和循环语句中。
continue 只能用于循环语句中。
二者功能类似,但continue 是终止本次循环,break 是终止本层循环。
break、continue 之后不能有其他的语句,因为程序永远不会执行其后的语句。
标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面。