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_;
    }
}
