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

Java数组反转程序运行异常求助:自定义函数实现报错排查

问题分析与修复方案

你的代码运行报错的核心原因是数组索引越界,还有逻辑冗余问题,下面逐一说明并修复:

1. 数组索引越界错误

在reversea方法中,你初始化j = array.length,但Java数组的合法索引范围是0到array.length - 1,第一次循环访问array[j]时直接超出范围,触发ArrayIndexOutOfBoundsException。

修正方式:将j的初始值改为array.length - 1,对应数组最后一个元素的索引。

2. 无意义的返回值

reversea方法返回j完全没必要——数组是引用类型,方法内部修改后原数组已经同步变更,不需要返回任何值,建议把方法返回类型改为void。

3. 冗余的打印输出

你调用reversea(arr)后打印了返回值,这一步没有实际意义,直接去掉即可。


修复后的完整代码

import java.util.*;
public class reverseanarray{
    public static void reversea(int array[]){
        int swap;
        int j = array.length - 1; // 修正初始索引
        for(int i = 0; i < array.length / 2; i++){
            swap = array[i];
            array[i] = array[j];
            array[j] = swap;
            j--;
        }
    }      
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        System.out.println("please input the length");
        int y = sc.nextInt();
        int arr[] = new int[y];
        // 输入数组元素
        for(int r = 0; r < arr.length; r++){
            System.out.println("please input the " + r + " index value");
            arr[r] = sc.nextInt();
        }
        reversea(arr); // 调用反转方法,无需打印返回值
        // 输出反转后的数组
        for(int i = 0; i < y; i++){
            System.out.println(arr[i]);
        }
    }
}

额外优化建议

  • 可以在反转前后分别打印数组,方便直观对比效果
  • 遵循Java命名规范,建议将类名改为ReverseAnArray(大驼峰格式)

内容的提问来源于stack exchange,提问作者Bilal Sahi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:45:28