2017-04-09 43 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]; 
相關問題