public class Card {
	private static final String[] RANK_NAMES =
	    { "", "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
	private static final String[] RANK_WORDS =
	    { "", "ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack",
	      "queen", "king" };

	private int rank_; // 1 (ace) to 13 (king)
	private String suit_; // "♥", "♦", "♣" or "♠"

	public Card ( int rank, String suit ) {
		rank_ = rank;
		suit_ = suit;
	}

	public int getRank () {
		return rank_;
	}

	public boolean isRed () {
		return suit_.equals("♥") || suit_.equals("♦");
	}

	/** The card as a screen reader should say it, e.g. "7 of hearts". */
	public String getSpokenName () {
		String suitWord = "spades";
		if ( suit_.equals("♥") ) {
			suitWord = "hearts";
		} else if ( suit_.equals("♦") ) {
			suitWord = "diamonds";
		} else if ( suit_.equals("♣") ) {
			suitWord = "clubs";
		}
		return RANK_WORDS[rank_] + " of " + suitWord;
	}

	@Override
	public String toString () {
		return RANK_NAMES[rank_] + suit_;
	}
}