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

Java中查找数组重复元素时触发ArrayIndexOutOfBoundsException问题

解决Java数组查找重复元素时的ArrayIndexOutOfBoundsException异常

你遇到的java.lang.ArrayIndexOutOfBoundsException是因为循环中数组索引越界了,咱们来一步步分析问题并修正:

问题根源

先看你代码里的循环逻辑:

for (int i = 1; i < arr.length; i++) { 
    if (arr[i] == arr[i + 1]) { 
        System.out.println("Duplicate element from teh given array is = " + arr[i]); 
    } 
}

数组的有效索引范围是从0到arr.length - 1,当i循环到arr.length - 1(也就是数组最后一个元素的索引)时,i + 1就等于arr.length,这时候访问arr[i+1]就超出了数组的边界,直接触发越界异常。

另外代码里还有个小拼写错误:teh应该改成the。

修正后的完整代码

import java.util.Arrays;

public class FindDuplicateNumberInArray { 
    public static void main(String[] args) { 
        int arr[] = { 11, 24, 65, 1, 111, 25, 58, 95, 24, 37 }; 
        Arrays.sort(arr); 
        String sortedArray = Arrays.toString(arr); 
        System.out.println(sortedArray); 
        // 调整循环条件为i < arr.length - 1,确保i+1不会越界
        // 同时将起始索引改为0,避免漏掉开头元素的重复检查
        for (int i = 0; i < arr.length - 1; i++) { 
            if (arr[i] == arr[i + 1]) { 
                System.out.println("Duplicate element from the given array is = " + arr[i]); 
            } 
        } 
    } 
}

额外说明

把循环起始索引从1改成0是更合理的选择:排序后的数组需要从第一个元素开始,依次比较相邻的两个元素,原来的写法会跳过第一个和第二个元素的对比,万一数组开头存在重复项就会被遗漏。

内容的提问来源于stack exchange,提问作者Madhur Palsokar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:01:15