我尝试排序一个双数组。奇数元素应该是升序。偶数元素应该降序。我的类如下。 当我运行项目时我会显示
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0
package com.fatih.sortarray;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class SortingArray {
public static Double[] sortItOut(Double[] array) {
Double[] arrayOdd = {};
Double[] arrayEven = {};
Double[] sortedArray = {};
for (int i = 0; i < array.length; i++) {
int k = 0;
int j = 0;
if (array[i] % 2 == 0) {
arrayOdd[k] = array[i];
k++;
} else {
arrayEven[j] = array[i];
j++;
}
}
Arrays.sort(arrayOdd, Collections.reverseOrder());
Arrays.sort(arrayEven);
List list = new ArrayList(Arrays.asList(arrayOdd));
list.addAll(Arrays.asList(arrayEven));
sortedArray = (Double[]) list.toArray();
return sortedArray;
}
}
...
public class SortingArrayTestt {
public static void main(String[] args) {
Double[] array = { 1d, 2d, 3d, 4d, 5d, 6d, 7d, 8d, 9d };
Double[] sortingArray = SortingArray.sortItOut(array);
for (int i = 0; i < sortingArray.length; i++) {
System.out.print(sortingArray[i]);
}
}
}
...
控制台输出是:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at com.fatih.sortarray.SortingArray.sortItOut(SortingArray.java:25)
at com.fatih.sortarray.SortingArrayTestt.main(SortingArrayTestt.java:9)
如何修复此错误? 谢谢你的一切。
答案 0 :(得分:0)
您正在初始化的所有数组的大小为0.初始化数组如下。
Double[] sortedArray = new Double[array.length];
答案 1 :(得分:0)
速记数组初始值设定项(例如{1, 2, 3, 4}
)会根据您放置的元素自动计算数组的大小,但您没有在arrayOdd
,arrayEven
中放置任何元素数组,所以它的大小为零。
简而言之,您创建了 arrayOdd
,arrayEven
数组,大小为,并且您正在尝试放置/访问数组元素(该0大小的数组),这是导致ArrayIndexOutOfBoundsException
,因此您需要创建具有大小的数组,如下所示:
Double[] arrayOdd = new Double[array.length];
Double[] arrayEven = new Double[array.length];
Double[] sortedArray = new Double[array.length];