一 循环嵌套
嵌套循环是指在一个循环语句的循环体中再定义一个循环语句的语法结构。while、do…while、
for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,如最常见的在for循环中嵌套for循环。
格式:
for(初始化表达式; 循环条件; 操作表达式) {
………
for(初始化表达式; 循环条件; 操作表达式) {
执行语句
………
}
………
}
例如:用“*”打印直角三角形
1public class ForForDemo { 2 public static void main(String[] args) { 3 int i, j; // 定义两个循环变量 4 for (i = 1; i <= 9; i++) { // 外层循环 5 for (j = 1; j <= i; j++) { // 内层循环 6 System.out.print("*"); // 打印* 7 } 8 System.out.print("\n"); // 换行 9 } 10 } 11}
第一步,在第3行代码定义了两个循环变量i和j,其中i为外层循环变量,j为内层循环变量。
第二步,在第4行代码将i初始化为1,条件i <= 9为true,首次进入外层循环的循环体。
第三步,在第5行代码将j初始化为1,由于此时i的值为1,条件j <= i为true,首次进入内层循环的循环体,打印一个“*”。
第四步,执行第5行代码中内层循环的操作表达式j++,将j的值自增为2。
第五步,执行第5行代码中的判断条件j<=i,判断结果为false,内层循环结束。执行后面的代码,打印换行符。
第六步,执行第4行代码中外层循环的操作表达式i++,将i的值自增为2。
第七步,执行第4行代码中的判断条件i<=9,判断结果为true,进入外层循环的循环体,继续执行内层循环。
第八步,由于i的值为2,内层循环会执行两次,即在第2行打印两个“*”。在内层循环结束时会打印换行符。
第九步,以此类推,在第3行会打印3个“*”,逐行递增,直到i的值为10时,外层循环的判断条件i <= 9结果为false,外层循环结束,整个程序也就结束了。
例如:用“*”打印等腰角三角形
public class ForForDemo { public static void main(String[] args) { System.out.println("请输入等腰三角形行数:"); int s2 = sc.nextInt(); for (int i=1;i<=s2 ;i++ ){ for (int j =1;j<=s2-i ;j++ ){ System.out.print(" "); } for (int k = 1;k<=2*i-1 ;k++ ) {System.out.print("*"); } System.out.print("\n"); } } }
例如:打印99乘法表
public class ForForDemo { public static void main(String[] args) { for (int i = 1;i<=9 ;i++ ){ for (int j=1;j<=i ;j++ ){ System.out.print(j+"×"+i+"="+i*j+" "); } System.out.print("\n"); } } }
例如:用“*”打印倒直角三角形
public class ForForDemo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入三角形行数:"); int s = sc.nextInt(); for (int i = 1;i<=s ;i++ ){ for (int j=s;j>=i ;j-- ){ System.out.print("*"); } System.out.print("\n"); } } }
二 跳转语句(break,continue)与标记
跳转语句用于实现循环执行过程中程序流程的跳转,在Java中的跳转语句有break语句和continue语句。
1.break
在switch条件语句和循环语句中都可以使用break语句。当它出现在switch条件语句中时,作用是终止某个case
并跳出switch结构。当它出现在循环语句中,作用是跳出循环语句,执行后面的代码。
例如:
public class BreakDemo { public static void main(String[] args) { int x = 1; // 定义变量x,初始值为1 while (x <= 4) { // 循环条件 System.out.println("x = " + x); // 条件成立,打印x的值 if (x == 3) { break; } x++; // x进行自增 } } }
2.标记
当break语句出现在嵌套循环中的内层循环时,它只能跳出内层循环,如果想使用break语句跳
出外层循环则需要对外层循环添加标记。
例如:
public class BreakDemo02 { public static void main(String[] args) { int i, j; // 定义两个循环变量 aaa: for (i = 1; i <= 9; i++) { // 外层循环 for (j = 1; j <= i; j++) { // 内层循环 if (i > 4) { // 判断i的值是否大于4 break aaa; // 跳出外层循环 } System.out.print("*"); // 打印* } System.out.print("\n"); // 换行 } } }
3.continue
continue语句用在循环语句中,它的作用是终止本次循环,执行下一次循环。
例如:
对1~100之内的奇数求和
public class ContinueDemo { public static void main(String[] args) { int sum = 0; // 定义变量sum,用于记住和 for (int i = 1; i <= 100; i++) { if (i % 2 == 0) { // i是一个偶数,不累加 continue; // 结束本次循环 } sum += i; // 实现sum和i的累加 } System.out.println("sum = " + sum); } }