Java 选择排序和冒泡排序错误
目前在选择排序和冒泡排序代码方面存在困难。 选择排序用于按升序排序学生ID,气泡排序用于按升序排序姓氏。该程序可编译,但在选择选项10或11时崩溃 我的数组声明如下:Java 选择排序和冒泡排序错误,java,arrays,sorting,bubble-sort,selection-sort,Java,Arrays,Sorting,Bubble Sort,Selection Sort,目前在选择排序和冒泡排序代码方面存在困难。 选择排序用于按升序排序学生ID,气泡排序用于按升序排序姓氏。该程序可编译,但在选择选项10或11时崩溃 我的数组声明如下: student[] list = new student[100]; //my array 这是我用于选择排序和冒泡排序的代码。我正在使用具有以下方法的数组: if (choice == 10) { // Dissplay the sorted array by student id SortAr
student[] list = new student[100]; //my array
这是我用于选择排序和冒泡排序的代码。我正在使用具有以下方法的数组:
if (choice == 10) { // Dissplay the sorted array by student id
SortArrayBySelection(list);
System.out.println("Sorted studentid are:");
for (int i =0; i< studentNumber; i++)
{
System.out.println(list[i]);
}
}
if (choice == 11){ // Display the sorted array by family name
BubbleSort(list);
System.out.println("The sorted names are:");
for(int i = 0; i < studentNumber; i++)
{
System.out.println(list[i].Getfamilyname());
}
}
} while (choice != 1);
}
public static void SortArrayBySelection(student[] arrayToSort){ // Function to sort out the array on sutdentid
for(int i = 0; i < arrayToSort.length-1; ++i)
{
int minIndex = i;
int studentid3 = arrayToSort[i].Getstudentid();
int studentid2 = arrayToSort[minIndex].Getstudentid();
for(int j = i + 1; j <arrayToSort.length; ++j)
{
int studentid1 = arrayToSort[j].Getstudentid();
if(studentid1 < studentid2)
{
minIndex = j;
}
}
int temp = studentid3;
studentid3 = studentid2;
studentid2 = temp;
}
}
public static void BubbleSort(student[] arraySort){
String t;
for(int i = 0; i<arraySort.length; i++){
for(int j=0; j<arraySort.length-1;j++){
String str1 = arraySort[j].Getfamilyname();
String str2 = arraySort[j+1].Getfamilyname();
if(str1.compareTo(str2)<0){
t = str1;
str1 = str2;
str2 = t;
}
}
}
}
由于您在代码中没有提到
行号
,还有学生班
和您准备学生[]列表=新学生[100]
的代码。因此,就我从下面几行看到的代码而言,您可以得到java.lang.NullPointerException
- 当您使用该值创建列表时,列表的长度将始终为
。因此,如果它是您在运行时准备的动态值,那么使用100
ArrayList list=new ArrayList()会更好编码>并使用
list.add(您的对象)添加值代码>
- 线程“main”java.lang.NullPointerException中的异常
位于client.client.SortArrayBySelection(client.java:270)
在client.client.main(client.java:232)
- 对于此错误,您正在调用
,并且可能在上述错误中结束的行是SortArrayBySelection方法
int studentid3=arrayToSort[i].Getstudentid(); int studentid2=arrayToSort[minIndex].Getstudentid(); int studentId=arrayToSort[j].Getstudentid()代码>
- 对于此错误,您正在调用
给定索引中没有值
,当您创建长度为100的数组时,如果您只放置10-15个值,那么它在其他位置将始终没有值。但是您的for循环
将转到100索引位置
,在10-15索引
之后,通过调用getters
总是会得到空值
同样的原因也适用于您的其他方法。我猜会引发一些异常,哪一个?您会遇到什么错误,程序会编译,但在选择选项10或11时崩溃
它不会引发任何错误?发布错误日志?错误:client.client.SortArrayBySelection(client.java:270)的client.client.main(client.java:232)的线程“main”java.lang.NullPointerException在client.client.BubbleSort(client.java:288)在client.client.main(client.java:246)的线程“main”java.lang.NullPointerException异常有什么建议吗?错误代码出现了…您的错误显示行号,而我们在代码中看不到行号,因此它们根本没有帮助,但您的数组可能没有完全填充。
Exception in thread "main" java.lang.NullPointerException
at client.Client.SortArrayBySelection(Client.java:270)
at client.Client.main(Client.java:232)
Exception in thread "main" java.lang.NullPointerException
at client.Client.BubbleSort(Client.java:288)
at client.Client.main(Client.java:246)