Sortierung Objekt mit Komparator gibt Null-Zeiger

Ich versuche Sortieren der ArrayList mit der 3-Karte in es. Ich mache das mit einem Komparator. (Ist das zuviel)? - Karte.getRank() gibt eine ganze Zahl zwischen 2 und 14. Ich habe absolut keine Ahnung, wohin ich gehe falsch. Ich habe dies getan, erfolgreich vor, und verglichen mit meinen anderen code, und es scheint, die gleichen. Ich wäre dankbar, wenn jemand verbreiten könnte etwas Licht in diese!

public int getHand(Card c1, Card c2, Card c3) {

ArrayList<Card> hand = new ArrayList<Card>();
hand.add(c1);
hand.add(c2);
hand.add(c3);

Collections.sort(hand, new SortCards());

    package com.evorlor.threecardpoker;

    import java.util.Comparator;

    public class SortCards implements Comparator<Card> {

    @Override
    public int compare(Card card1, Card card2) {

        if ((card1.getRank() - card2.getRank()) > 0) {
            return 1;
        }
        if ((card1.getRank() - card2.getRank()) < 0) {
            return -1;
        }
        return 0;

    }

}

LOGCAT:

08-06 18:32:56.155: E/AndroidRuntime(4906): FATAL EXCEPTION: main
08-06 18:32:56.155: E/AndroidRuntime(4906): java.lang.IllegalStateException: Could not execute method of the activity
08-06 18:32:56.155: E/AndroidRuntime(4906):     at android.view.View$1.onClick(View.java:3599)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at android.view.View.performClick(View.java:4204)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at android.view.View$PerformClick.run(View.java:17355)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at android.os.Handler.handleCallback(Handler.java:725)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at android.os.Handler.dispatchMessage(Handler.java:92)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at android.os.Looper.loop(Looper.java:137)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at android.app.ActivityThread.main(ActivityThread.java:5041)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at java.lang.reflect.Method.invokeNative(Native Method)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at java.lang.reflect.Method.invoke(Method.java:511)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at dalvik.system.NativeStart.main(Native Method)
08-06 18:32:56.155: E/AndroidRuntime(4906): Caused by: java.lang.reflect.InvocationTargetException
08-06 18:32:56.155: E/AndroidRuntime(4906):     at java.lang.reflect.Method.invokeNative(Native Method)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at java.lang.reflect.Method.invoke(Method.java:511)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at android.view.View$1.onClick(View.java:3594)
08-06 18:32:56.155: E/AndroidRuntime(4906):     ... 11 more
08-06 18:32:56.155: E/AndroidRuntime(4906): Caused by: java.lang.NullPointerException
08-06 18:32:56.155: E/AndroidRuntime(4906):     at com.evorlor.threecardpoker.SortCards.compare(SortCards.java:10)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at com.evorlor.threecardpoker.SortCards.compare(SortCards.java:1)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at java.util.TimSort.countRunAndMakeAscending(TimSort.java:320)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at java.util.TimSort.sort(TimSort.java:185)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at java.util.TimSort.sort(TimSort.java:169)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at java.util.Arrays.sort(Arrays.java:2038)
08-06 18:32:56.155: E/AndroidRuntime(4906):     at java.util.Collections.sort(Collections.java:1891)

package com.evorlor.threecardpoker;

public class Card {
    private int rank;
    private char suit;

    public Card(int rank, char suit) {
        super();
        this.rank = rank;
        this.suit = suit;
    }

    public int getRank() {
        return rank;
    }

    public char getSuit() {
        return suit;
    }

}
  • sehen, was ist null-Komparator
  • Können wir den code für Card?
  • sicher. krank post jetzt
  • In diesem Fall, sind Sie sicher, dass Sie nicht vorbei null zu getHand?
  • oh wow. das ist peinlich. ich habe nie instanziiert (richtige Wort?) die Karte
  • Eines der Card Objekte null ist, oder einer von Ihnen ist null zurückgeben von getRank(). Ich empfehle, lernen Sie den debugger verwenden.
  • Karte war null. sorry für die Verschwendung der ur Zeit auf diesen einen. weiß nicht, wie ich vergessen habe, das zu tun. habe vor mir selbst
  • Gern nehmen die Antwort, wenn Sie Ihr Problem gelöst

InformationsquelleAutor Evorlor | 2013-08-06
Schreibe einen Kommentar