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

数组值反转程序异常:仅输出部分元素的问题排查求助

你的数组反转程序输出异常的原因分析与修复方案

嘿,我来帮你拆解下这个问题~首先咱们先看你的代码逻辑,然后一步步找问题:

int[] val = {0, 1, 2, 3}; 
int temp; 
for(int i=0;i<val.length/2;i++) { 
    temp=val[i]; 
    val[i]=val[val.length - 1 - i]; 
    val[val.length - 1 - i]=temp; 
    System.out.println(val[i]); 
}

为什么只输出3和2?

你的数组长度是4,val.length/2的结果是2,所以这个for循环只会执行两次(i=0和i=1):

  • 当i=0时:你把val[0]和val[3]交换,此时数组变成{3,1,2,0},然后打印val[0]也就是3;
  • 当i=1时:你把val[1]和val[2]交换,数组变成{3,2,1,0},然后打印val[1]也就是2;
    循环到i=2时,i<2不成立,循环直接结束,所以自然只输出两个值。

为什么换成打印temp会输出0和1?

同样是两次循环:

  • i=0时,temp先存了val[0]的初始值0,交换后打印temp就是0;
  • i=1时,temp存了val[1]的初始值1,交换后打印temp就是1;
    所以输出0和1。

怎么修复才能输出完整的反转数组?

如果想要看到整个反转后的数组内容,你需要在交换循环结束后,再遍历整个数组打印:

int[] val = {0, 1, 2, 3}; 
int temp; 
// 先完成数组反转的交换操作
for(int i=0;i<val.length/2;i++) { 
    temp=val[i]; 
    val[i]=val[val.length - 1 - i]; 
    val[val.length - 1 - i]=temp; 
}
// 遍历打印整个数组
for(int num : val) {
    System.out.println(num);
}

这样就能输出3、2、1、0四个值啦。

内容的提问来源于stack exchange,提问作者Marco Aiello

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:48:55