Java数组索引操作代码解析:为何输出为1,3,6,10,15?
拆解Java数组操作代码的运行逻辑
嘿,刚学Java遇到这种数组循环的困惑太正常了!我来一步步给你拆解这段代码,帮你搞清楚为啥运行结果是1 3 6 10 15,尤其是第二个循环的迭代过程和10、15这两个值的由来。
首先先把代码清晰展示出来:
int qty[] = new int[5]; for (int i = 0; i < qty.length; i++) qty[i] = i+1; for (int j = 0; j < 4; j++) qty[j+1] += qty[j]; for (int i = 0; i < qty.length; i++) System.out.print(" " + qty[i]); System.out.println();
我们分三个阶段来分析:
1. 第一个for循环:初始化数组
首先创建了一个长度为5的int数组qty,初始时所有元素默认值都是0。
这个循环的i从0到4(因为qty.length是5,i < 5),每次执行qty[i] = i+1:
- 当
i=0时,qty[0] = 0+1 = 1 - 当
i=1时,qty[1] = 1+1 = 2 - 当
i=2时,qty[2] = 2+1 = 3 - 当
i=3时,qty[3] = 3+1 = 4 - 当
i=4时,qty[4] = 4+1 = 5
循环结束后,数组qty的状态是:[1, 2, 3, 4, 5]
2. 第二个for循环:累加更新数组(重点!)
这个循环的j从0到3(因为j < 4),每次执行qty[j+1] += qty[j]——这等价于qty[j+1] = qty[j+1] + qty[j],也就是把当前位置的元素加到下一个位置的元素上,而且每次更新后的结果会被后续迭代直接使用。
我们逐次看迭代过程:
- j=0:操作
qty[1] += qty[0]→qty[1] = 2 + 1 = 3,数组变成:[1, 3, 3, 4, 5] - j=1:操作
qty[2] += qty[1]→qty[2] = 3 + 3 = 6,数组变成:[1, 3, 6, 4, 5] - j=2:操作
qty[3] += qty[2]→qty[3] = 4 + 6 = 10,数组变成:[1, 3, 6, 10, 5] - j=3:操作
qty[4] += qty[3]→qty[4] = 5 + 10 = 15,数组变成:[1, 3, 6, 10, 15]
到这里你就能明白:
10是通过**原来的qty[3](4) + 更新后的qty[2](6)**得到的15是通过**原来的qty[4](5) + 更新后的qty[3](10)**得到的
3. 第三个for循环:输出数组元素
最后这个循环只是遍历数组的每个元素,依次打印出来,所以输出结果就是:1 3 6 10 15
内容的提问来源于stack exchange,提问作者Nebojsa Miletic
相关产品推荐
相关产品推荐

