1. 嵌套循环的使用
1. 定义
将一个循环结构 A 声明在另一个循环结构 B 的循环体中,就构成了嵌套循环
2. java 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| public class ForForTest { public static void main(String[] args) { for (int i = 0; i < 5; i++) { System.out.print("*"); } System.out.println('\n');
for (int j = 0; j < 4; j++) { for (int i = 0; i < 5; i++) { System.out.print("*"); } System.out.println(); }
for (int i = 0; i < 5; i++) { for (int j = 0; j <= i; j++) { System.out.print("*"); } System.out.println(); }
for (int i = 0; i < 4; i++) { for (int j = 0; j < 4 - i; j++) { System.out.print("*"); } System.out.println(); } } }
|
3. Tip
- 内层遍历一遍,相当于外层循环一次
- 假设外层循环执行 m 次,内层循环执行 n 次。
此时内层循环的循环体一共执行了 m * n 次
4. 九九乘法表
1 2 3 4 5 6 7 8 9 10
| public class NineNineTable { public static void main(String[] args) { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(i + "*" + j + "=" + (i * j) + "\t"); } System.out.println(); } } }
|
2. break,continue,label 的基本使用
1. break,continue 的基本使用
break 和 continue |
使用范围 |
循环中使用的作用(不同点) |
相同点 |
break: |
switch-case 循环结构中 |
结束当前循环 |
关键字后面不能声明执行语句 |
continue: |
循环结构中 |
结束当次循环 |
关键字后面不能声明执行语句 |
2. java 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| public class BreakContinueTest { public static void main(String[] args) { for(int i = 1;i <= 10;i++){ if(i % 4 == 0){ break; } System.out.print(i); } System.out.println();
for (int i = 1; i <= 4; i++) { for (int j = 1; j <= 10; j++) { if(j % 4 == 0){ break; } System.out.print(j); } System.out.println(); }
label:for(int i = 1;i <= 4;i++){ for(int j = 1;j <= 10;j++){ if(j % 4 == 0){ continue label; } System.out.print(j); } System.out.println(); } } }
|
2. 求 100000 以内的所有质数的输出(逐渐优化)
1. 方法 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public class PrimeNumberTest { public static void main(String[] args) { boolean isFlag = true;
for (int i = 2; i <= 100; i++) { for (int j = 2; j < i; j++) { if (i % j == 0){ isFlag = false; break; } } if(isFlag == true){ System.out.println(i); } isFlag = true; } } }
|
2.方法 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public class PrimeNumberTest1 { public static void main(String[] args) { boolean isFlag = true; int count = 0;
long start = System.currentTimeMillis();
for (int i = 2; i <= 100000; i++) { for (int j = 2; j < Math.sqrt(i); j++) { if (i % j == 0){ isFlag = false; break; } } if(isFlag == true){ count++; } isFlag = true; }
long end = System.currentTimeMillis(); System.out.println("质数的个数为:" + count); System.out.println("所花费的时间为:" + (end - start)); } }
|
3. 方法 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class PrimeNumberTest2 { public static void main(String[] args) { int count = 0; long start = System.currentTimeMillis();
label:for (int i = 2; i <= 100000; i++) { for (int j = 2; j < Math.sqrt(i); j++) { if (i % j == 0){ continue label; } } count++; }
long end = System.currentTimeMillis(); System.out.println("质数的个数为:" + count); System.out.println("所花费的时间为:" + (end - start)); } }
|