目录
引言
循环嵌套是指在循环体内嵌套其他循环结构的一种程序设计方法。在Java中,循环嵌套可以使用for、while和do-while等循环语句来实现。它可以帮助我们更有效地处理复杂的问题,提高代码的可读性和灵活性。但是需要注意循环嵌套也可能带来代码执行效率降低的问题,因此需要谨慎使用。
一.Java循环嵌套可以分为两种类型:
1.循环体内嵌套循环
在一个循环语句的循环体内部再嵌套一个或多个循环。这种嵌套方式中,内层循环的执行会受到外层循环的控制,内层循环需要执行符合条件的完整循环才能使外层循环进入下一次循环。
(1)for循环嵌套
for循环嵌套可以在一个for循环中嵌套另一个for循环,通常用于处理二维数组或矩阵。例如,以下代码演示如何使用for循环嵌套:
(1)在for循环语句之前已经给循环变量赋初值,则for语句的循环变量赋初值部分可以省略,但是初值后的分号不能省略。
(2)可以将循环变量修正值的工作纳入循环体中去做。
(3)for循环语句可以三个部分都省略。但是省略表达式2会陷入死循环,除非在里面用break跳出
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
// 内层循环体
}
// 外层循环体
}
下面举例for循环:
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print("*");
}
System.out.println();
}
2.循环体外嵌套循环
在一个循环语句的外部再嵌套一个或多个循环。这种嵌套方式中,外层循环和内层循环是独立的,它们的执行不会相互影响。Java中的while、do-while和for循环都可以任意嵌套多层。
(1)以下使用while循环示例
while (condition) {
}
其中,condition是一个布尔表达式,当条件为true时,循环体会一直执行;当条件为false时,循环会结束。
下面举例while循环:
int i = 0;
while (i < m) {
int j = 0;
while (j < n) {
// 内层循环体
j++;
}
// 外层循环体
i++;
}
在使用while循环时,需要注意以下几点:
在循环开始前,需要先对条件进行检查,以确保循环不会执行无效的操作。
在循环体中,需要改变条件的状态,否则循环会变成死循环。
在循环体中,需要注意变量的作用域和生命周期,以确保变量的正确使用。
3.程序举例
打印2-1000之间的所有素数,每行显示8个素数,统计一共有多少个素数。素数是指一个大于1的自然数,除了1和它本身不能被其他自然数整除。
思路:先判断一个数是否为素数,将这个数用循环代替,从2到1000,修改格式,每行显示8个素数。
public class Prime {
public static void main(String[] args) {
int count=0;
for (int num = 2; num <= 1000; num++) {
boolean isPrime = true;// true 表示素数
for (int i = 2; i < num; i++) { // 从2到 num-1
if (num % i == 0) { // 判断i是否能被num整除,被整除就是合数
isPrime = false;
break;
}
}
if (isPrime) {
count++;
System.out.print(num + " ");
}if (count==8) {
count=0;
System.out.println();
}
}
}
}
结果为:
二.break和continue语句
1.break
语句:
break
语句用于完全终止当前循环,跳出循环体,不再执行循环中的剩余语句。当在循环中执行break
时,程序会立即跳出循环,不再进行循环判断和循环体的执行
例如,下面的代码是一个简单的for循环,当i的值等于3时,break
语句会被执行,循环会被立即终止:
for (int i = 0; i < 10; i++) {
if (i == 3) {
break;
}
System.out.println(i);
}
这段代码的输出结果为:0、1、2。当i
等于3时,break
语句被执行,循环被终止,剩余的循环体语句不再执行
2.continue
语句
continue
语句用于终止当前循环迭代,跳过当前循环体的剩余语句,并开始下一个循环迭代。当在循环中执行continue时,程序会跳过剩余的循环体语句,进行下一次循环判断。
下面的代码是一个简单的for循环,当i的值是偶数时,continue
语句会被执行,循环体中剩余的语句将被跳过,进行下一个循环:
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue;
}
System.out.println(i);
}
结果如下:
这段代码的输出结果为:1、3、5、7、9。当i
是偶数时,continue
语句被执行,跳过当前迭代剩余的语句,只输出奇数。
总结
break
用于完全终止当前循环,跳出循环体;而continue
用于终止当前循环迭代,跳过当前循环体的剩余语句,开始下一个循环迭代。break
可以提前结束循环,避免不必要的迭代;而continue
可以跳过满足特定条件的循环迭代。