尝试在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]);
}
}
}
}
答案 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。