Java循环嵌套详解及经典列题
作者:Springboard_jaj
引言代码,用嵌套循环做基础的九九乘法表
for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + "×" + i + "=" + (i * j) + "\t"); } System.out.println(); }
一、循环嵌套的结构
外层循环与内层循环
在Java中,循环嵌套是指一个循环语句(外层循环)内部包含另一个循环语句(内层循环)。外层循环每执行一次,内层循环会完整地执行一遍。
例如,当外层是 for 循环,内层也是 for 循环时:
for (int i = 1; i <= 3; i++) { for (int j = 1; j <= 2; j++) { System.out.println("i = " + i + ", j = " + j); } }
这里外层 for 循环的变量 i 从1到3变化。对于 i 的每一个值,内层 for 循环的变量 j 从1到2变化,并且在每次内层循环中都会打印出 i 和 j 的值。所以总共会打印出6行结果。
多层嵌套
可以有多层循环嵌套,如三层循环嵌套。
考虑一个简单的例子,模拟一个三维空间中的坐标遍历(这里只是简单示例,不涉及实际的三维空间意义):
for (int x = 0; x < 2; x++) { for (int y = 0; y < 3; y++) { for (int z = 0; z < 4; z++) { System.out.println("x = " + x + ", y = " + y + ", z = " + z); } } }
外层循环控制 x 坐标,中层循环控制 y 坐标,内层循环控制 z 坐标。随着嵌套层数的增加,循环执行的总次数是各层循环次数的乘积。在这个例子中,总共会执行 2 * 3 * 4 = 24 次循环。
二、循环嵌套中的变量作用域
内层循环与外层循环变量
内层循环和外层循环的变量是相互独立的,即使它们的变量名相同(虽然不推荐这样做,以避免混淆)。
例如:
for (int i = 1; i <= 3; i++) { for (int i = 1; i <= 2; i++) { System.out.println(i); } }
这里内层循环的 i 会覆盖外层循环的 i ,但这种用法容易导致逻辑错误,所以最好使用不同的变量名。
变量的初始化和更新
在循环嵌套中,每个循环的变量都按照自己的初始化、条件判断和更新规则进行操作。
例如,在 for 循环嵌套中,外层 for 循环的变量按照外层的初始化表达式、条件表达式和更新表达式进行操作,内层 for 循环的变量同理。
三、不同类型循环的嵌套
for 循环与 while 循环嵌套
可以将 for 循环作为外层循环, while 循环作为内层循环,反之亦然。
例如,以 for 循环为外层, while 循环为内层:
for (int i = 1; i <= 3; i++) { int j = 1; while (j <= 2) { System.out.println("i = " + i + ", j = " + j); j++; } }
这里外层 for 循环控制 i 的值,对于每个 i ,内层 while 循环控制 j 的值并打印出 i 和 j 的组合。
while 循环与 do - while 循环嵌套
同样可以实现 while 循环包含 do - while 循环或者相反的嵌套关系。
例如, while 循环包含 do - while 循环:
int m = 1; while (m <= 2) { int n = 1; do { System.out.println("m = " + m + ", n = " + n); n++; } while (n <= 3); m++; }
外层 while 循环控制 m 的值,内层 do - while
(1)循环嵌套:在循环体中再嵌套一个循环,如while中可以继续嵌套while,比较常见的是for嵌套for
(2)语法结构
for(int i=0;i<10,i++){ for(int j=0; j<20; j++){ .......... } }
2.案例分析
1.(示列):运动员跑50圈,每跑一圈做一个俯卧撑
public static void main (String[] args){ for (int i=0; i<50; i++){ System.out.println("跑了第"+i+"圈"); for(int j=0; j<10; j++){ System.out.println("\t做了第"+i+"圈,第"+j+"个俯卧撑"); } } }
四.嵌套经典列题(九九乘法表制作)
例题
每跑一圈 做十个俯卧撑,一共跑十圈
for (int a = 0; a < 10; a++) { System.out.println("\n正在跑圈"); for (int b = 0; b < 10; b++) { System.out.print("\t俯卧撑"); } }
例题
跑100圈 ,第一圈 做一个俯卧撑 第二圈 做两个俯卧撑......
for (int a = 0; a < 10; a++) { System.out.println("\n正在跑圈"); for (int b = 0; b <= a; b++) { System.out.print("\t俯卧撑"); } }
例题
打印一个由星号 '*
' 组成的矩形。大小是 4*4
for (int a = 0; a < 4; a++) { for (int b = 0; b < 4; b++) { System.out.print("*\t"); } System.out.println(""); }
例题
打印直角三角形,高是6层
for (int a = 0; a < 6; a++) { for (int b = 0; b <= a; b++) { System.out.print("*\t"); } System.out.println(""); }
例题
打印9*9乘法表
for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + "×" + i + "=" + (i * j) + "\t"); } System.out.println(); }
例题
公鸡每只5元,母鸡每只3元,小鸡每3只1元;一百元买一百只鸡,要求三种鸡都要买,有多少种购买组合?
for (int roosters = 1; roosters < 20; roosters++) { for (int hens = 1; hens < 34; hens++) { int chicks = 100 - roosters - hens; if (chicks > 0 && chicks % 3 == 0) { if (5 * roosters + 3 * hens + chicks / 3 == 100) { System.out.println("公鸡:" + roosters + " 母鸡:" + hens + " 小鸡:" + chicks); } } } }
例题
10到50之间的素数
int start = 10; int end = 50; for (int number = start; number <= end; number++) { boolean isPrime = true; for (int divisor = 2; divisor <= Math.sqrt(number); divisor++) { if (number % divisor == 0) { isPrime = false; break; } } if (isPrime && number > 1) { System.out.println(number); } }
例题
生成两个长度为10的整数数组,数组中的元素由0到9之间的随机数填充。寻找数组r1中的某个元素a和数组r2中的某个元素b,使得它们的和等于10,并将这样的对打印出来。
Random rd = new Random(); int[] r1 = new int[10]; int[] r2 = new int[10]; for (int i = 0; i < 10; i++) { r1[i] = rd.nextInt(10); r2[i] = rd.nextInt(10); } System.out.println(Arrays.toString(r1)); System.out.println(Arrays.toString(r2)); for (int a : r1) { for (int b : r2) { if (a + b == 10) { System.out.println(a + "----" + b); } } }
总结
到此这篇关于Java循环嵌套详解及经典列题的文章就介绍到这了,更多相关Java循环嵌套内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!