...
Code Block | ||
---|---|---|
| ||
public final class Card implements Comparable{ private String suit; private int rank; public Card(String s, int r) { if (s == null) throw new NullPointerException(); suit = s; rank = r; } public boolean equals(Object o) { if (o instanceof Card) { Card c=(Card)o; return suit.equals(c.suit) && (rank == c.rank); // good } return false; } // this method fulfills its contract public int compareTo(Object o) { if (o instanceof Card) { Card c=(Card)o; if( suit.equals(c.suit) && (c.rank >= rank + Integer.MIN_VALUE) && (c.rank <= rank + Integer.MAX_VALUE) ) return c.rank - rank; return suit.compareTo(c.suit); } throw new ClassCastException(); } public static void main(String[] args) { Card a = new Card("Clubs", 2); Card b = new Card("Clubs", 10); Card c = new Card("Hearts", 7); System.out.println(a.compareTo(b)); // returns 0 System.out.println(a.compareTo(c)); // returns a negative number System.out.println(b.compareTo(c)); // returns a negative number } } |
...