Java详述嵌套for循环执行顺序

2022-08-03 13:28:41

嵌套for循环执行步骤:

1.先判断最外层循环条件,若满足条件则进入第一层循环体;2.进入第一层循环体后进行第二层循环条件判断,若满足判断条件,进入第二层循环体;3.由内而外执行循环体操作;4.执行完第一次内循环体操作后,进行内循环体变量累加,再次执行内循环体操作,直到不满足进入内循环体条件为止;5.执行外循环体操作;6.在第一次外循环体操作完成后,外循环体变量累加,回到步骤1,判断是否满足进入外循环体条件,若满足条件,再次依次执行上述步骤,直到不满足进入外循环体条件为止;7.彻底退出嵌套循环操作。

下面我们通过例子来加深理解:

//实现功能:打印1到100之间所有的质数publicclassStudy{publicstaticvoidmain(String args[]){int i=0;//局部变量初始化int j=0;int count=0;//记录素数个数for(i=1; i<=100; i++){//记录需要进行判断的数for(j=2; j<=i; j++){//判断该数是否为素数if(i==1){//1既不是素数也不是偶数break;}if(i% j==0){break;}}if(j==i){ 
				System.out.print(i+" ");//输出素数
				count++;//次数自增}}
		System.out.println();
		System.out.println("1到100之间素数的个数为:"+count+"个");}}

结果如下:
在这里插入图片描述
过程详细分析:

1.先定义变量i并赋值为1,即i=1,i<=100,满足最外层循环条件,进入第一层循环体;2.进入第一层循环体后进行第二层循环条件判断:定义局部变量j=2,j<=i(此时i=1,j=2,不满足判断条件,退出第二层循环;3.接着判断j是否等于i,这里显然i不等于j(i=1,j=2,最后i++,即i=i+1,此时i=2,i<=100,满足第一层循环条件,进入第一层循环体;4.进入第一层循环体后进行第二层循环条件判断:,j<=i(此时i=2,j=2,满足判断条件,进入第二层循环;5.判断i是否等于1,是的话就跳出第二层循环(break只能跳出一层循环),否的话接着往下执行,判断i模j是否为0(注意一个等号是赋值,两个等号才是数值相等,这里表达的意思是i能否整除j),这里i和j的数值均为2,满足条件,跳出第二层for循环,(局部变量j不会自增,break跳出后后面的代码不会被执行),接着执行下面的语句,判断j是否等于i,显然这里i=2,j=2,满足条件,输出素数i,打印次数count,接着变量i++(此时i=3;6.i=3,i<=100,满足第一层循环条件,进入第一层循环中,开始第二层循环,这里j还是等于2,j=2<=i=3,满足条件,进入
内层循环内部,i=3,不满足i=1,不进if语句内部,2%3!=0,不进if语句内部;7.此时局部变量j++,即j=3,后序同步骤4,步骤5原理相同,这里不再赘述;8.接着局部变量i++.此时i=4,i<=100,进入第一层循环体,此时j=2,不是根据上面的值来进行判断的(上面的步骤中j=3,这点要特别注意);9.j=2<=i=4,满足条件,接着进行if语句判断,不满足,接着进行下一个if语句判断,4%2==0满足条件,break,但此时j=2,i=4,j!=i,不打印,即4不是素数,局部变量i++,此时i=510.后续步骤和步骤一开始原理相通。

附加说明:
在这里插入图片描述
这里i=4,j=2就说明不会将4打印出来,因为满足不了i==j。
总结:对于素数的判断,想当于用n去除以n-1,n-2…2这些数,如果有能被整除的,则说明该数不是素数。九九乘法表也是如此,感兴趣的同学可以去研究研究,加深对知识的理解。
对break跳转语句不熟的同学请参考这篇博文进行学习:break、continue、return之间的区别

有疑问欢迎留言!

点个赞,加个关注呗!嘿嘿!

  • 作者:bkLion
  • 原文链接:https://blog.csdn.net/H_W_1212/article/details/104131580
    更新时间:2022-08-03 13:28:41