2014-04-22 3 views
0
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; 
      } 
     } 
    } 
} 

문제는 if (list[i].compareTo(list[i]) > 0)입니다. 한 번에 한 줄씩 모든 것을 주석 처리했습니다. 이것이 오류의 원인이되는 유일한 원인이며 출력에 대한 설명을 제공하지 않습니다. 그것이 어느 라인에 있는지. if에있을 것이고, bubbleSort 메소드를 호출 할 것이다.Java 오브젝트 compareto

+3

잘 행동하는 comparable은 항상'list [i] .compareTo (list [i]) == 0'이어야합니다. 정의에 따라. 'list [i] .compareTo (list [k]) '또는 그 반대의 뜻입니까? – assylias

+1

실제로'list [i] .compareTo (list [i + 1]) '라고 말하기로되어있었습니다. 원래 게시물에서 수정했습니다. – Chris

+0

그리고 여전히 문제가 있습니까? 오류가 무엇입니까? – jedison

답변

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

이 줄은 배열의 요소를 초기화하지 않습니다. 모든 슬롯에 null이 있으니 NullPointerException입니다.

또는 init 코드를 게시하지 않았지만 문제가있을 수 있습니다.