解答例 - j1.lesson07.PrintAsHex

package j1.lesson07;

import java.io.*;

/**
 * 課題0703 - 解答例.
 @author s.arakawa
 @version $Id: PrintAsHex_java.rps,v 1.1 2006/03/06 12:56:15 java2005 Exp $
 */
public class PrintAsHex {

    /**
     * コンソールから0以上の整数を入力させ、その値を8桁の16進数として表示するプログラム。
     @param args 無視される
     @throws IOException 入力時に例外が発生した場合
     */
    public static void main(String[] argsthrows IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("0以上の整数を入力:");
        int input = Integer.parseInt(reader.readLine());
        
        if (input < 0) {
            System.out.println("0以上の整数を入力してください");
        }
        else {
            printAsHex(input);
        }
    }
    
    /**
     * 与えられたint型の整数について、その16進数を8桁で表示する。
     * 結果が8桁に満たない場合は上位の桁を <code>0</code> で埋める。
     @param number 16進数に変換して表示する値
     */
    public static void printAsHex(int number) {
//      for (int mask = 0x10000000; mask != 0; mask /= 0x10) {
        for (int mask = 268435456; mask != 0; mask /= 16) {
            int colmun = number / mask % 16;
            printColumn(colmun);
        }
    }
    
    /**
     <b>このメソッドは課題の仕様に含まれていない</b>
     <code>0</code> から <code>15</code> の範囲の数値を16進数に変換して表示する。
     @param col 16進数の1桁 (<code>0 ~ 15</code>)
     */
    public static void printColumn(int col) {
        if (col < 10) {
            System.out.print(col);
        }
        else {
            switch (col) {
                case 10:
                    System.out.print("A");
                    break;
                case 11:
                    System.out.print("B");
                    break;
                case 12:
                    System.out.print("C");
                    break;
                case 13:
                    System.out.print("D");
                    break;
                case 14:
                    System.out.print("E");
                    break;
                case 15:
                    System.out.print("F");
                    break;
                default:
                    System.out.print("?");
            }
        }
    }
}