“Java的循环嵌套”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
第1行: 第1行:
 +
==问题引出==
 +
*如何打印一行*号呢?
 +
 +
方法1:
 +
 +
System.out.println("**********");
 +
 +
方法2:
 +
 +
<nowiki>public class ForFor {
 +
 +
public static void main(String[] args) {
 +
// TODO Auto-generated method stub
 +
        for(int j=0;j<10;j++) {
 +
        System.out.print("*");
 +
        }
 +
}
 +
 +
}</nowiki>
 +
 +
*如何用for循环打印多行*号呢 ?
 +
 +
<nowiki>package task4;
 +
 +
public class ForFor {
 +
 +
public static void main(String[] args) {
 +
// TODO Auto-generated method stub
 +
        for(int i=0;i<10;i++) {
 +
        System.out.println("**********");
 +
        }
 +
}
 +
 +
}
 +
</nowiki>
 +
 +
*我们发现其实第2段程序里面的println语句也完全可以用第1段程序的循环来代替。
 +
 +
于是,程序可以改写为:
 +
 +
<nowiki>package task4;
 +
 +
public class ForFor {
 +
 +
public static void main(String[] args) {
 +
// TODO Auto-generated method stub
 +
        for(int i=0;i<10;i++) {
 +
        //打印每一行的星标,回车结束
 +
        for(int j=0;j<10;j++) {
 +
            System.out.print("*");//打印每一列的星标
 +
            }
 +
        System.out.println();
 +
        }
 +
}
 +
 +
}
 +
</nowiki>
 +
 +
==嵌套循环==
 
*如果把一个循环放在另一个循环体内,那么就可以形成嵌套循环,嵌套循环既可以是for循环嵌套while循环,也可以是while循环嵌套do while循环……即各种类型的循环都可以作为外层循环,也可以作为内层循环。
 
*如果把一个循环放在另一个循环体内,那么就可以形成嵌套循环,嵌套循环既可以是for循环嵌套while循环,也可以是while循环嵌套do while循环……即各种类型的循环都可以作为外层循环,也可以作为内层循环。
 +
 
*当程序遇到嵌套循环时,如果外层循环的循环条件允许,则开始执行外层循环的循环体,而内层循环将被外层循环的循环体来执行——只不过内层循环需要反复执行自己的循环体而已。当内层循环执行结束,且外层循环的循环体执行时,则再次计算外层循环的循环条件,决定是否再次开始执行外层循环的循环体。
 
*当程序遇到嵌套循环时,如果外层循环的循环条件允许,则开始执行外层循环的循环体,而内层循环将被外层循环的循环体来执行——只不过内层循环需要反复执行自己的循环体而已。当内层循环执行结束,且外层循环的循环体执行时,则再次计算外层循环的循环条件,决定是否再次开始执行外层循环的循环体。
 +
 
*嵌套循环的执行流程如图2-19所示。
 
*嵌套循环的执行流程如图2-19所示。
*[[文件:java2-21.png]]
+
 
*如图2-19所示,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可以结束外层循环的当次循环,开始下一次循环。
+
*[[文件:java2-21.png|600px]]
 +
 
 +
*如图2-19所示,'''嵌套循环就是把内层循环当成外层循环的循环体'''。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可以结束外层循环的当次循环,开始下一次循环。
 +
 
 +
===实例:打印矩形===
 +
 
 +
<nowiki>
 +
package task4;
 +
 
 +
public class ForFor {
 +
 
 +
public static void main(String[] args) {
 +
// TODO Auto-generated method stub
 +
        for(int i=0;i<10;i++) {
 +
        //打印每一行的星标,回车结束
 +
        for(int j=0;j<10;j++) {
 +
            System.out.print("*");//打印每一列的星标
 +
            }
 +
        System.out.println();
 +
        }
 +
}
 +
 
 +
}
 +
 
 +
</nowiki>
 +
 
 +
===打印平行四边形===
 +
 
 +
<nowiki>package task4;
 +
 
 +
public class ForFor {
 +
 
 +
public static void main(String[] args) {
 +
// TODO Auto-generated method stub
 +
for (int i = 1; i <=5; i++) {
 +
            //填充空格
 +
            for (int j = 1; j <= 5 - i; j++) {
 +
                System.out.print(" ");
 +
            }
 +
            //内层循环 每次打印一个*
 +
            for (int k = 1; k <= 5; k++) {
 +
                System.out.print("*");
 +
            }
 +
            System.out.println();
 +
    }
 +
}
 +
 
 +
}
 +
</nowiki>
 +
 
 +
===实例:打印九九乘法表===
 +
 
 
*例如:通过嵌套循环输出九九乘法表。
 
*例如:通过嵌套循环输出九九乘法表。
 +
 +
*[[文件:java2-22.png]]
 +
 
  <nowiki>public class NestedLoopTest {
 
  <nowiki>public class NestedLoopTest {
 
public static void main(String[] args) {
 
public static void main(String[] args) {

2020年3月26日 (四) 15:04的版本

问题引出

  • 如何打印一行*号呢?

方法1:

System.out.println("**********");

方法2:

public class ForFor {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        for(int j=0;j<10;j++) {
        	System.out.print("*");
        }
	}

}
  • 如何用for循环打印多行*号呢 ?
package task4;

public class ForFor {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        for(int i=0;i<10;i++) {
        	System.out.println("**********");
        }
	}

}

  • 我们发现其实第2段程序里面的println语句也完全可以用第1段程序的循环来代替。

于是,程序可以改写为:

package task4;

public class ForFor {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        for(int i=0;i<10;i++) {
        	//打印每一行的星标,回车结束
        	for(int j=0;j<10;j++) {
            	System.out.print("*");//打印每一列的星标
            }
        	System.out.println();
        }
	}

}

嵌套循环

  • 如果把一个循环放在另一个循环体内,那么就可以形成嵌套循环,嵌套循环既可以是for循环嵌套while循环,也可以是while循环嵌套do while循环……即各种类型的循环都可以作为外层循环,也可以作为内层循环。
  • 当程序遇到嵌套循环时,如果外层循环的循环条件允许,则开始执行外层循环的循环体,而内层循环将被外层循环的循环体来执行——只不过内层循环需要反复执行自己的循环体而已。当内层循环执行结束,且外层循环的循环体执行时,则再次计算外层循环的循环条件,决定是否再次开始执行外层循环的循环体。
  • 嵌套循环的执行流程如图2-19所示。
  • Java2-21.png
  • 如图2-19所示,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可以结束外层循环的当次循环,开始下一次循环。

实例:打印矩形

package task4;

public class ForFor {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        for(int i=0;i<10;i++) {
        	//打印每一行的星标,回车结束
        	for(int j=0;j<10;j++) {
            	System.out.print("*");//打印每一列的星标
            }
        	System.out.println();
        }
	}

}


打印平行四边形

package task4;

public class ForFor {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 for (int i = 1; i <=5; i++) {
	            //填充空格
	            for (int j = 1; j <= 5 - i; j++) {
	                System.out.print(" ");
	            }
	            //内层循环 每次打印一个*
	            for (int k = 1; k <= 5; k++) {
	                System.out.print("*");
	            }
	            System.out.println();
	     }
	}

}

实例:打印九九乘法表

  • 例如:通过嵌套循环输出九九乘法表。
  • Java2-22.png
public class NestedLoopTest {
	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.print("\t");
			}
			System.out.println();
		}
	}
}
  • 运行上面程序,看到如下运行结果:
  • Java2-22.png
  • 从上面运行结果可以看出,进入嵌套循环时,循环变量i开始为1,这时即进入了外层循环。进入外层循环后,内存循环把i当成一个普通变量,其值为1。在外层循环的当次循环里,内层循环就是一个普通循环。
  • 实际上,嵌套循环不仅可以是两层嵌套,而且可以是三层嵌套、四层嵌套……不论循环如何嵌套,总可以把内层循环当成外层循环的循环体来对待,区别只是这个循环体里包含了需要反复执行的代码。
  • 面馆程序;
public class test03 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String [] menu = {"阳春面","油泼面","鸡汤面","火鸡面","安徽板面"};
		String [] drink = {"可乐","啤酒","雪碧"};
		for(int i=0;i<5;i++){
			for(int j=0;j<3;j++){
				System.out.println(menu[i]+"+"+drink[j]);
			}
		}
	}

}

返回 Java程序设计