解答例 - j2.lesson01.CardAction

package j2.lesson01;

import java.io.*;

/**
 * 課題1404 (2) - 解答例.
 {@link Card} を操作するクラス.
 @author arakawa
 @version $Id: CardAction_java.rps,v 1.1 2006/03/06 12:56:15 java2005 Exp $
 */
public class CardAction {
    
    /**
     {@link Card} を操作するプログラム.
     @param args 無視される
     @throws IOException 入力中に例外が発生した場合
     */
    // プログラム全体
    public static void main(String[] argsthrows IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        
        // print "カードを入力:"
        System.out.print("カードを入力:");
        
        // card = 入力されたカード
        String s = reader.readLine();
        Card card = createCardOf(s);
        
        // print "入力されたカードは"
        System.out.print("入力されたカードは");

        // print(card)
        print(card);
    }

    /**
     * 指定した文字列からなるカードを作成する。
     @param str 元となる文字列
     @return 対応するカード
     */
    public static Card createCardOf(String str) {
        Card card = new Card();
        card.suite = str.charAt(0);

        char rank = str.charAt(1);
        if (rank == 'A') {
            card.rank = 1;
        }
        else if (rank == 'J') {
            card.rank = 11;
        }
        else if (rank == 'Q') {
            card.rank = 12;
        }
        else if (rank == 'K') {
            card.rank = 13;
        }
        else {
            card.rank = Integer.parseInt(str.substring(1));
        }

        return card;
    }

    /**
     * 指定したカードを表示する
     @param card 表示するカード
     */
    public static void print(Card card) {
        switch (card.suite) {
            case 'S':
                System.out.print("スペード");
                break;
            case 'C':
                System.out.print("クラブ");
                break;
            case 'H':
                System.out.print("ハート");
                break;
            case 'D':
                System.out.print("ダイヤ");
                break;
            default:
                System.out.print("?");
                break;
        }

        System.out.print("の");

        switch (card.rank) {
            case 1:
                System.out.print("エース");
                break;
            case 11:
                System.out.print("ジャック");
                break;
            case 12:
                System.out.print("クイーン");
                break;
            case 13:
                System.out.print("キング");
                break;
            default:
                System.out.print(card.rank);
        }
    }
}