You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Java类的数组操作输出结果判定与运行逻辑解析

代码执行逻辑拆解

1. 初始数组状态

main方法初始化完成后,数组确实是[0,2,4,6,8,0,0,0,0,0],索引0到9的对应值和你用可视化工具得到的结果一致。

2. shiftTwoOver方法执行逻辑

你对if分支的判断完全正确:数组长度为10,arr.length - 2 = 8,传入的n=5不满足5>8的条件,所以直接进入for循环。
这里最容易忽略的核心逻辑是:数组是原地修改的,前序循环改动的数组值会被后序循环直接读取使用,我们逐次拆解循环的每一步执行效果:
循环规则:i从0到4(满足i < 5的条件),每次执行arr[i+2] = arr[i]

  • 第1次(i=0):给索引2赋值为索引0的初始值 → 索引2从4变为0,数组变为[0,2,0,6,8,0,0,0,0,0]
  • 第2次(i=1):给索引3赋值为索引1的初始值 → 索引3从6变为2,数组变为[0,2,0,2,8,0,0,0,0,0]
  • 第3次(i=2):给索引4赋值为修改后的索引2的值(注意此处索引2已经不是初始的4,是第一步修改后的0)→ 索引4从8变为0,数组变为[0,2,0,2,0,0,0,0,0,0]
  • 第4次(i=3):给索引5赋值为修改后的索引3的值(第二步修改后的2)→ 索引5从0变为2,数组变为[0,2,0,2,0,2,0,0,0,0]
  • 第5次(i=4):给索引6赋值为修改后的索引4的值(第三步修改后的0)→ 索引6保持0不变,循环结束

3. 最终输出结果

main方法最后循环打印的是索引2到6的数值,对应值分别是0、2、0、2、0,最终输出为:

0
2
0
2
0

你提到的[2,0,2,0…]类结果,大概率是记错了输出的起始索引,如果从索引1开始打印就会得到这个序列。

内容的提问来源于stack exchange,提问作者Summer W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:36:01