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

Java数组反转失效求助:代码未实现预期反转效果

问题原因与解决方案

你的反转数组代码问题出在循环遍历了整个数组。当你把前半部分元素和后半部分对应位置交换后,循环继续执行到后半段时,又会把已经交换好的元素换回去,最终数组回到初始状态。

拿你的长度为5的数组举例:

  • i=0:交换索引0和4 → 数组变成[50,20,30,40,10]
  • i=1:交换索引1和3 → 数组变成[50,40,30,20,10]
  • i=2:交换索引2和2(无变化)
  • i=3:交换索引3和1 → 数组变回[50,20,30,40,10]
  • i=4:交换索引4和0 → 数组变回原数组[10,20,30,40,50]

修正后的代码

只需要把循环条件改成i < arr.length / 2,让循环只执行前半段元素的交换即可:

public class Reversing_array {
    public static void reverse_arr(int arr[]) {
        int n = arr.length - 1;
        // 仅遍历数组前半部分,避免重复交换
        for (int i = 0; i < arr.length / 2; i++) {
            int temp = arr[i];
            arr[i] = arr[n - i];
            arr[n - i] = temp;
        }
    }

    public static void main(String[] args) {
        int arr[] = { 10, 20, 30, 40, 50 };
        reverse_arr(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

运行后会输出正确的反转结果:50、40、30、20、10。

内容的提问来源于stack exchange,提问作者Akhil Agrawal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:42:10