2017-04-09 66 views
-1

我尝试排序一个双数组。奇数元素应该升序。一个偶数元素应该降序。我的类如下。 当我拼命地跑项目,我表现出线程线程“主”java.lang.Array索引出界例外0

异常 “主要” 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.初始化数组,如下所示。

Double[] sortedArray = new Double[array.length]; 
0

速记数组的初始化(例如像{1, 2, 3, 4})自动计算取决于你已经放置在元件阵列的大小,但没有放置任何元件在arrayOddarrayEven阵列,所以这将是零尺寸。

总之,已创建arrayOddarrayEven阵列大小为零和你正在试图地点/访问这是造成ArrayIndexOutOfBoundsException阵列元件(即0大小的数组的),所以需要创建与阵列大小如下所示:

Double[] arrayOdd = new Double[array.length]; 
Double[] arrayEven = new Double[array.length]; 
Double[] sortedArray = new Double[array.length];