2017-04-09 2 views
-1

J'essaie de trier un tableau double.Un élément impair devrait être croissant.Un élément pair devrait descendre.Mes classes est comme suit. Quand je projet runned je montrethread "principal" java.lang.Array Index Hors des limites Exception 0

Exception dans le thread "principal" 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]); 
    } 

} 

} 

...

Le la sortie de la console est:

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) 

Comment réparer cette erreur? Merci pour tout.

Répondre

0

Tous les tableaux que vous initialisez sont de taille 0. initialisez les tableaux comme suit.

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

initialiseurs tableau sténographie (par exemple comme {1, 2, 3, 4}) calcule automatiquement la taille du tableau en fonction des éléments que vous avez placé, mais vous ne placez aucun élément dans arrayOdd, arrayEven tableaux, il sera de zéro Taille.

En bref, vous avez créé arrayOdd, arrayEven tableaux avec zéro taille et que vous essayez lieu/accéder aux éléments du tableau (de ce 0 tableau taille), qui est à l'origine de la ArrayIndexOutOfBoundsException, vous devez créer le tableau avec taille comme montré ci-dessous:

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