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

Java实现数组交换功能报IndexOutOfBound异常问题咨询

问题排查与修复

异常根因与错误点

  • 下标越界问题:getSwap方法中循环条件为i < arr.length,当i等于数组最大下标arr.length -1时,i+1等于arr.length,超出数组合法下标范围(数组下标从0开始,最大为length-1),直接触发IndexOutOfBound异常。
  • 变量作用域错误:swaped数组是getSwap方法内的局部变量,main方法无法直接访问;且getSwap当前返回值为单个int类型,无法返回完整的交换后数组。
  • 逻辑不符合需求:当前相邻交换的循环运行完成后,实际效果是将数组第一个元素移动到末尾,若你需要的是数组整体反转,需要调整交换逻辑。

修复后完整代码

import java.util.*;
class ArraySwap {
    public static void main(String[] args) throws Exception {
        Scanner scn = new Scanner(System.in);
        // 输入数组长度
        System.out.println("Enter number of Elements of Array : ");
        int n = scn.nextInt();
        // 输入数组元素
        System.out.println("Enter Elements of Array : ");
        int arr[] = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = scn.nextInt();
        }
        // 打印交换前数组
        System.out.println("交换前数组元素:");
        for (int i = 0; i < arr.length; i++) {
            System.out.println("The Elements in Array are : " + arr[i]);
        }
        System.out.println("After Swapping:");
        // 接收交换后的数组
        int[] swaped = getSwap(arr);
        // 打印交换后数组
        for (int i = 0; i < swaped.length; i++) {
            System.out.println("The Elements in Array are : " + swaped[i]);
        }
        scn.close();
    }
    
    // 交换方法:实现数组整体反转,返回交换后的新数组
    public static int[] getSwap(int arr[]) {
        int[] swaped = Arrays.copyOf(arr, arr.length);
        int temp;
        // 只需要循环到数组中间位置即可完成反转
        for (int i = 0; i < swaped.length / 2; i++) {
            temp = swaped[i];
            swaped[i] = swaped[swaped.length - 1 - i];
            swaped[swaped.length - 1 - i] = temp;
        }
        return swaped;
    }
}

改动说明

  • 调整了getSwap方法的返回值类型为int[],直接返回完整的交换后数组
  • 将循环条件调整为i < swaped.length / 2,从数组首尾向中间两两交换,实现数组整体反转的效果,同时完全规避下标越界问题
  • main方法中新增变量接收getSwap的返回结果,解决局部变量无法跨方法访问的问题
  • 新增Scanner资源关闭逻辑,避免资源泄露

如果你原本的需求是相邻元素两两交换(最终效果为数组首元素移到末尾),只需要将getSwap中的循环条件替换为i < swaped.length -1即可,其他逻辑保持不变。

内容的提问来源于stack exchange,提问作者Himanshu Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 05:33:04