2014-11-25 2 views
1

나는 데크의 계급을 가진 열거 형이있다. 이 순위를 배열에 추가합니다.배열 가능. 배열에 추가 된 열 정렬 정렬.

 
Exception in thread "main" java.lang.NullPointerException at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:291) 
    at java.util.ComparableTimSort.sort(ComparableTimSort.java:171) 
    at java.util.ComparableTimSort.sort(ComparableTimSort.java:146) 
    at java.util.Arrays.sort(Arrays.java:472) 
    at HW3.Deck.sort(Deck.java:69) 
    at HW3.War.main(War.java:100) 
Java Result: 1 

어떤 제안 : 나는 일종의 대신이 반환하지 않은 사용자 정의 비교를 사용하여 배열을 정렬 Arrays.sort에 사용하면?

 
@Override 
` public int compareTo(PlayingCard o) { 
    if (this==o) return 0; 
    if(this.getSuit()!=o.getSuit()){ 
     return this.suit.compareTo(o.getSuit()); 
    } 

    else { 
     return this.rank.compareTo(o.getRank()); 
    } 
} 
+2

당신은 당신의 코드를 게시 할 수 있습니까? – brlaranjeira

+0

배열에 null 요소가있는 것 같은데요? –

+0

열거 형은 Comparable 인터페이스를 구현할 때 정렬 가능합니다. 서수를 사용하여 정렬하십시오. NullPointerException이 발생하면 배열에 null이있는 것입니다. 코드를 올리시겠습니까? – lordoku

답변

0

당신이 Arrays.sort(T[], Comparator)를 사용하는 경우, 당신은 널 돌봐해야이 자신을 값 : 감사

우는 소리는 코드입니다.

Arrays.sort(enums, new Comparator<Rank>>() { 
    @Override 
    public int compare(Rank o1, Rank o2) { 
     if (o1 == o2) { 
      return 0; 
     } 

     // Put NULL to the end. 
     if (o1 == null) { 
      return 1; 
     } 
     if (o2 == null) { 
      return -1; 
     } 

     return o1.compareTo(o2); // sort by ordinal 
    } 
}); 
+0

조언 해 주셔서 감사합니다. CompareTo를 잘못 구현했을 때 잘못된 방법으로 비교 한 것 같습니다. – CasualCoder3

+0

@NickSpirit : 도움이된다면 답 이외의 체크 표시를 클릭하여이 질문을 해결 된 것으로 표시 할 수 있습니다. –

+0

안녕하세요, 마지막으로 한 가지만해도 괜찮습니다. 컴파일러가 왜 null 예외 오류를 줍니까? – CasualCoder3