Java对象比较 私人可比[]项目=新可比[1000000]; 泡泡运动(项目); 公共静态void bubbleSort(T[]列表){ 温度; for(int k=1;k0。我把所有的东西都注释掉了,一行一行。这是导致错误的唯一原因,它没有在输出中给我任何解释。这是哪一行。它将位于if,并调用bubbleSort方法 private Comparable[] items = new Comparable[1000000]; bubbleSort(items); public static <T extends Comparable<T>> void bubbleSort(T[] list){ T temp; for (int k = 1; k < list.length; k++) { // Perform the kth pass for (int i = 0; i < list.length - k; i++) { if (list[i].compareTo(list[i + 1]) > 0){ temp = list[i]; list[i] = list[i + 1]; list[i + 1] = temp; } } } }

Java对象比较 私人可比[]项目=新可比[1000000]; 泡泡运动(项目); 公共静态void bubbleSort(T[]列表){ 温度; for(int k=1;k0。我把所有的东西都注释掉了,一行一行。这是导致错误的唯一原因,它没有在输出中给我任何解释。这是哪一行。它将位于if,并调用bubbleSort方法 private Comparable[] items = new Comparable[1000000]; bubbleSort(items); public static <T extends Comparable<T>> void bubbleSort(T[] list){ T temp; for (int k = 1; k < list.length; k++) { // Perform the kth pass for (int i = 0; i < list.length - k; i++) { if (list[i].compareTo(list[i + 1]) > 0){ temp = list[i]; list[i] = list[i + 1]; list[i + 1] = temp; } } } },java,compare,abstract,compareto,Java,Compare,Abstract,Compareto,我遇到的问题是if(list[I].compareTo(list[I])>0。我把所有的东西都注释掉了,一行一行。这是导致错误的唯一原因,它没有在输出中给我任何解释。这是哪一行。它将位于if,并调用bubbleSort方法 private Comparable[] items = new Comparable[1000000]; bubbleSort(items); public static <T extends Comparable<T>> void bub

我遇到的问题是
if(list[I].compareTo(list[I])>0
。我把所有的东西都注释掉了,一行一行。这是导致错误的唯一原因,它没有在输出中给我任何解释。这是哪一行。它将位于if,并调用bubbleSort方法

private Comparable[] items = new Comparable[1000000];   

bubbleSort(items);

public static <T extends Comparable<T>> void bubbleSort(T[] list){

    T temp;
    for (int k = 1; k < list.length; k++) {
    // Perform the kth pass
        for (int i = 0; i < list.length - k; i++) {
            if (list[i].compareTo(list[i + 1]) > 0){
                temp = list[i];
                list[i] = list[i + 1];
                list[i + 1] = temp;
            }
        }
    }
}
此行不初始化数组中的任何元素。您在每个插槽中都有
null
,因此您的
NullPointerException


或者您可能只是没有发布init代码,但问题就出现了。

一个行为良好的可比对象应该始终具有
list[i]。compareTo(list[i])==0
。根据定义。你的意思是
list[i].compareTo(list[k])
还是反之?它实际上应该是说
list[i].compareTo(list[i+1])
我在原来的帖子中修复了它。这仍然会引起问题吗?错误是什么?它说“线程中的异常”AWT-EventQueue-0“java.lang.NullPointerException”@ChrisVachon这意味着您的数组包含空元素。如何填充它?
private Comparable[] items = new Comparable[1000000];