尝试从数组中查找重复数字时,出现“ java.lang.ArrayIndexOutOfBoundsException”异常

时间:2019-08-19 10:54:23

标签: java arrays

尝试在Java数组中查找重复数字时获取java.lang.ArrayIndexOutOfBoundsException

代码如下:

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);

        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]);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

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);

        // for (int i = 1; i < arr.length; i++) {
        //    if (arr[i] == arr[i - 1]) {    

        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]);
            }
        }
    }
}

要检查重复的数字,请对最后一个元素(例如第n个位置)运行for循环,但是if条件检查第(n + 1)个元素(不存在)的最后一个元素。而且,您还需要检查第一个元素,所以说i = 0。 或者,您可以只将if(arr [i] == arr [i + 1])条件更改为if(arr [i] == arr [i-1])

答案 1 :(得分:0)

您有一个非常基本的IndexOutOfBounds-异常。访问数组时,必须提供索引。如果该索引大于最后访问的索引array.length - 1,则会出现超出范围的异常。列表也是如此。

由于您将当前(i)值与下一个(i + 1)进行比较,因此超出了范围,因为您计数到i < arr.length。这意味着当i == arr.length - 1仍将1加到i时,等于arr.length,大于arr.length-1。