Java嵌套循环执行次数与预期不符的技术咨询
问题分析与解决方案
嘿,我来帮你拆解一下这个问题,搞清楚为什么会出现8行输出,以及结果变化的原因~
为什么会输出8行?
咱们先看你的外层循环:
for (int i = 2; i <= 4; i+=2)
这个循环的执行过程是这样的:
- 第一次:
i=2,满足i<=4,进入循环体 - 执行完后,
i +=2→i=4,再次满足i<=4,进入循环体 - 再执行完后,
i +=2→i=6,不满足i<=4,外层循环结束
也就是说,外层循环一共执行了2次。
而你的内层循环:
for (int j =1; j < 5; j++)
j从1到4,每次循环会执行4次(j=1、2、3、4)。
2次外层循环 × 4次内层循环 = 8次输出,这就是为什么你会看到8行结果啦。
为什么后面四次结果会变化?
再看你打印的代码:
System.out.println("2 times " + j + " = " + (i*j));
这里的字符串部分"2 times "是写死的,但计算乘积用的是变量i。第一次外层循环时i=2,所以乘积是2*j,结果符合“2 times”的描述;但第二次外层循环时i=4,乘积变成了4*j,可你打印的字符串还是写的“2 times”,就出现了比如2 times 1 = 4这种矛盾的结果。
修正方案
如果你只想生成4次输出(也就是2的1-4倍乘法表),其实不需要外层循环,直接用内层循环就可以:
for (int j = 1; j < 5; j++) { System.out.println("2 times " + j + " = " + (2 * j)); }
这样运行后就会输出你预期的4行结果:
2 times 1 = 2
2 times 2 = 4
2 times 3 = 6
2 times 4 = 8
如果你本来是想通过i控制乘数,但只想输出4次,那可以调整外层循环的条件,比如只让i取一次值(比如去掉外层循环,或者把外层循环的终止条件改成i<3)。
内容的提问来源于stack exchange,提问作者Sunny Kk
相关产品推荐
相关产品推荐

