一、多重循环

一个循环体内有包含另一个完整的循环结构

执行规律:

(1)外层循环控制行,内层循环控制列

(2)外层循环执行一次,内层循环执行了一遍

结构:

while(循环条件1){
      //循环操作1
      while(循环条件2){
           //循环操作2
      }
 }-----------------------
do{
     //循环操作1
     do{
         //循环操作2
     }while(循环条件2);
 }while(循环条件1);-----------------------
for(循环条件1){
      //循环操作1
      for(循环条件2){
           //循环操作2
      }
 }------------------------
while(循环条件1){
       //循环操作1
       for(循环条件2){
                //循环操作2
       }
 }

注意
各循环可互相嵌套
一般不超过三层
外层循环变量变化一次,内层循环变量要变化一遍

public static void main(String[] args) {
		// 使用双重for循环输出九九乘法表
		// 外层循环变量控制行数 九九乘法表一共有9行
		for (int i = 1; i <= 9; i++) {
			// 内层循环变量控制每一行的列数 九九乘法表每一行的列数与行号相同,也就是j的范围对应从1到i
			for (int j = 1; j <= i; j++) {
				// 每一个乘法式子中一个因数为i,另一个因数为j
				System.out.print(j + "*" + i + "=" + (i * j) + "\t");
			}
			// 换行
			System.out.println("");
		}
	}

 其中,外层循环是控制行数的,内层循环控制列数

二、break语句

作用场景:switch选择结构和循环结构中

作用:

(1).在switch选择结构中遇到break,则结束整个switch选择结构,执行switch选择结构后面的代码

(2).在循环结构中遇到break,则结束整个循环结构后续所有操作,执行循环结构后面的代码

语法结构:

while(……){
 …………
 …………
 break;
 …………
 …………
 }

注意:break一般结合if选择语句一起使用

for(int i=1;i<=20;i++){
			System.out.println(i);
			//判断i的值,看其有没有到10,如果到10了,就应该结束整个for循环
			if(i==10){
				break;//结束整个for循环
			}
		}

 

java双循环怎么优化 java两重循环_myeclipse

三、continue语句

作用场景:只能作用在循环结构中

作用:结束当前(本次)循环后续操作,继续执行下一次循环操作

语法结构:

while(……){
 …………
 …………
 continue;
 …………
 …………
 }

注意:continue一般结合if语句一起使用

用continue输出班级中80分以上的人数

Scanner sc = new Scanner(System.in);
		System.out.println("请输入班级人数");
		int people = sc.nextInt();
		int num=0;
		for(int i=1;i<=people;i++){
			System.out.println("请输入第"+i+"位同学的成绩");
			double score = sc.nextDouble();
			if(score<80){
				continue;
			}
			num++;
		}
		System.out.println("共有"+num+"人80分以上");

break与continue的对比:

使用场合:break常用于switch结构和循环结构中;continue一般用于循环结构中

作用:break语句终止某个循环,程序跳转到循环块外的下一条语句;continue跳出本次循环,进入下一次循环

break和continue在双重循环中的使用:

break在双重循环中的使用,内层循环中的break结束的是内层循环,如果要结束外层训话你,需要使用标记来表明结束哪个循环

break:

a: for (int i = 1; i <= 5; i++) {
			System.out.print(i + "--");
			b: for (int j = 10; j <= 50; j += 10) {
				System.out.print(j + " ");
				if (j == 30) {
					break;//结束内层循环
				}
			}
			System.out.println();
		}

 break默认是找离自己最近的循环来执行的,所以这里的break是作用在内循环中的,也就是内循环输出到30的时候就会结束,然后执行循环外面的代码

java双循环怎么优化 java两重循环_学习_02

 如果要让break控制外循环的话可以在循环前面“做一个标记”,就是像下面的图一样的,并且“告诉”break是结束那个循环

java双循环怎么优化 java两重循环_System_03

a: for (int i = 1; i <= 5; i++) {
			System.out.print(i + "--");
			b: for (int j = 10; j <= 50; j += 10) {
				System.out.print(j + " ");
				if (j == 30) {
					break a;//结束内层循环
				}
			}
			System.out.println();
		}

 执行结果:当j第一次变成30的时候就结束了。

java双循环怎么优化 java两重循环_System_04

 continue:

代码如下:

a:for(int i=1;i<=5;i++){
			System.out.print(i+"-----");
			b:for(int j=10;j<=50;j+=10){
				if(j==30){
					continue;
				}
				System.out.print(j+" ");
			}
			System.out.println();
		}

 这里没有指定所以默认是对内循环使用的,也就是在j=30的时候是不输出的;输出结果如下:

java双循环怎么优化 java两重循环_java双循环怎么优化_05

 同样continue也是可以指定对哪个循环使用的。

a:for(int i=1;i<=5;i++){
			System.out.print(i+"-----");
			b:for(int j=10;j<=50;j+=10){
				if(j==30){
					continue a;
				}
				System.out.print(j+" ");
			}
			System.out.println();
		}

对外层循环使用,即j=30是结束本次循环,i直接开始迭代并进入下次迭代

java双循环怎么优化 java两重循环_java_06

四、程序调试

通过代码阅读或者加输出语句查找程序错误

当程序结构越来越复杂时,需要专门的技术来发现和定位错误,就是"程序调试":

设置断点---->单步运行----->观察变量

打断点:

双击左边栏:

java双循环怎么优化 java两重循环_java双循环怎么优化_07

 取消断点也是这样的

断点的运行

java双循环怎么优化 java两重循环_myeclipse_08

点击这里单步运行:

java双循环怎么优化 java两重循环_myeclipse_09

点击这里

在调试的时候这里会有数据

java双循环怎么优化 java两重循环_myeclipse_10

 输出也是单步输出的

java双循环怎么优化 java两重循环_System_11

 结束的时候点击这里退出调试的模式

 

java双循环怎么优化 java两重循环_myeclipse_12