[JAVA] Array java.lang.ArrayIndexOutOfBoundsException:0错误

时间:2016-03-27 06:17:44

标签: java

我运行代码时遇到了一些问题。 我尝试使用冒泡排序算法。

这是我的代码 class = 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]);
     }
}     
}

这是我的主要课程 class = 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();
抱歉我的英文不好

1 个答案:

答案 0 :(得分:2)

此代码

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

sortArr创建为长度 的数组,因为d初始化为默认值零。

它没有元素。因此,尝试访问任何元素都会抛出您所看到的异常。

在知道需要多少元素之后,需要移动分配sortArr的语句。

相关问题