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

Java实现数组元素反转输出错误,新手求解决方案

问题原因与修复方案

原代码核心错误

  • 采用了多余的双层循环结构:数组逆序仅需要单轮双指针遍历,双层循环会导致元素被反复交换,最终回到接近原顺序的错误状态
  • 双指针未同步递进:原逻辑中start每次循环+1,但end每次都会重置为数组最后一位,完全不符合逆序交换的逻辑要求
  • 硬编码数组长度:代码中多处写死长度为5,只要修改数组定义的长度就会触发逻辑错误
  • 工具方法中直接调用System.exit(0),会直接终止整个程序,灵活性极低

修复后代码

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int[] arr = new int[5];
        Scanner input = new Scanner(System.in);
        System.out.println("输入数组元素:");
        for (int i = 0; i < arr.length; i++) {
            arr[i] = input.nextInt();
        }
        reverse(arr);
        // 输出逆序后的数组
        System.out.println(Arrays.toString(arr));
        input.close();
    }

    // 方法名改为更语义化的reverse
    static void reverse(int arr[]) {
        // 双指针单次循环即可
        for (int start = 0, end = arr.length - 1; start < end; start++, end--) {
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
        }
    }
}

改动说明

  • 将双指针放在同一轮循环中,每次交换后start右移、end左移,直到两个指针相遇就停止,仅需要遍历数组一半长度即可完成逆序,效率更高
  • 所有长度判断改用arr.length动态获取,修改数组长度不需要改动其他逻辑
  • 移除了工具方法中的输出和程序终止逻辑,将输出放在主方法中,方法复用性更强
  • 类名改为符合Java规范的大驼峰写法Main,方法名改为语义化的reverse

内容的提问来源于stack exchange,提问作者Abhinav K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:54:05