我运行代码时遇到了一些问题。 我尝试使用冒泡排序算法。
这是我的代码 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();
抱歉我的英文不好
答案 0 :(得分:2)
此代码
int size,d,z,swap;
int sortArr[] = new int[d];
将sortArr
创建为长度 零 的数组,因为d初始化为默认值零。
它没有元素。因此,尝试访问任何元素都会抛出您所看到的异常。
在知道需要多少元素之后,需要移动分配sortArr
的语句。