多重循环
前面说过了循环,多重循环单独拿出来是因为他有很多独特的地方,要多注意一下,当然也是更复杂一点。
首先所谓多重循环,其实就是多个相同或者不同的循环的嵌套,即在一个循环中再构建一个循环。在说循环之前,先来说跳出循环的关键词:
continue: 继续的意思,在循环执行过程中遇到continue时就会跳过本次循环,在他下面的语句块在本次循环中是不会执行了。直接进入下一次循环。
break: 和continue类似,break也是会停止本次循环,但break跳出的会更多,他是直接停止了这个循环,跳出这个循环,在程序执行到break的时候,这个循环就不会在执行下去,是直接结束循环。在分支结构中break常用于switch语句。
(还有就是整个循环都执行完毕,循环条件不成立的时候,很多地方其实就是省略了continue语句。)
在多重循环中continue和break的跳转语句是很重要的,好好运用会起到关键的作用。
下面来介绍一下多重循环的用法。
1、找出三位数中的水仙花数
//外层循环限制取值范围
double sum;
for (int i = 100, j; i <= 999; i++) {
//三位数,限制循环范围
j = i;
sum = 0;
//内层循环完成各位数的立方和
while (j >= 1) {
//水仙花数是各位数的立方和等于本身
//这里是运用循环将各位数的数单独取出求立方
sum += Math.pow(j % 10, 3);
//降位,下一循环取个位上的数
j /= 10;
}
if (sum == i) {
System.out.println(i);
}
}
2、输出500以内的所有质素
//外层循环控制1~500
for (int i = 2; i <= 500; i++) {
//证明
count2++;
boolean is = true;
for (int j = 2; j <= Math.sqrt(i); j++) {
//数学中,比较小于其自身开根之后的值,
//如果都不能除尽就说明其自身是质数
count2++;
if (i % j == 0) {
is = false;
break;
}
//这里找到第一个可以除尽的数就说明不是质数
//所以就可以用break退出这个循环,进入外部的循环
//继续判断下一个数
}
if (is) {
count++;
System.out.println(i);
}
}
以上,我们可以看出:多重循环是由多个循环语句嵌套的,在用到continue和break的时候就要考虑是在内层循环还是外层循环。
外层循环:break和continue执行的功能和上面说的一样。
内层循环:continue没什么变化,跳出本次循环,继续下一次的循环。break则是跳出了内层循环,直接执行外层的循环。如果外层再有个break,则说明整个多重循环都会结束。