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[] args) throws 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("?");
}
}
}
}
|