2016-03-27 2 views
0

У меня есть некоторые проблемы при запуске моего кода. Я попытался использовать алгоритм сортировки Bubble.[JAVA] Array java.lang.ArrayIndexOutOfBoundsException: 0 error

это мой код класс = sort.java

package asaimenoop; 
import java.util.Scanner; 
public class sort 
{ 
    int size,d,z,swap; 
    int sortArr[] = new int[d]; 
    Scanner in = new Scanner(System.in); 

    public void getData() 
    { 

    System.out.print("Enter how many data you want to enter : "); 
    size = in.nextInt(); 

    for (int z = 0; z < size; z++) 
    { 
     System.out.print("Enter element at " + (z+1) + "th position : "); 
     sortArr[z] = in.nextInt(); 
    } 
} 

    public void BubSort() 
    { 
     getData(); 

     for (int z = 0; z < (size -1); z++) 
     { 
      for (d = 0; d < size - z - 1; d++) 
      { 
       if (sortArr[d] > sortArr[d+1]) 
       { 
        swap = sortArr[d]; 
        sortArr[d] = sortArr[d+1]; 
        sortArr[d+1] = swap; 
      } 
     }  
    } 
} 

    public void Display() 
    { 
    BubSort(); 
    System.out.println("After Sorting"); 

    for (int z = 0; z < size; z++) 
    { 
       System.out.println(sortArr[z]); 
    } 
}  
} 

и это мой основной класс класс = Bubsort.java

package asaimenoop; 
    public class Bubsort 
{ 
    public static void main (String[] args) 
    { 
     sort t = new sort(); 
     t.BubSort(); 
     t.Display(); 

    } 
} 

когда я запускаю мой код, он получает ошибку:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 
    at asaimenoop.sort.getData(sort.java:19) 
    at asaimenoop.sort.BubSort(sort.java:25) 
    at asaimenoop.Bubsort.main(Bubsort.java:9) 

оно застряло, когда я хочу ввести позицию элемента ,

sortArr[z] = in.nextInt(); 

извините за мой плохой английский

+0

Возможный дубликат [Что вызывает java.lang.ArrayIndexOutOfBoundsException и как его предотвратить?] (Http://stackoverflow.com/questions/5554734/what-causes-a-java-lang-arrayindexoutofboundsexception-and- как-ду-я-не допустить этого) –

ответ

2

Этот код

int size,d,z,swap; 
int sortArr[] = new int[d]; 

создает sortArr как массив длины нулевой потому что d инициализируется значением по умолчанию, равным нулю.

У него нет элементов. Поэтому попытка доступа к любому элементу вызовет исключение, которое вы видите.

Вам необходимо переместить оператор, который выделяет sortArr, после того, как вы узнаете, сколько элементов вам нужно.