如果采用Java自带的toHexString()还是相当简单的。
我不使用toHexString方法。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int j;
String hex = "";
do{
j = num % 16;
switch(j){
case 10: hex ="A"+hex;break;
case 11: hex ="B"+hex;break;
case 12: hex ="C"+hex;break;
case 13: hex ="D"+hex;break;
case 14: hex ="E"+hex;break;
case 15: hex ="F"+hex;break;
default: hex = j +hex;
}
num = num / 16;
}while(num != 0);
System.out.print(hex);
}
}
switch中应该采用 hex = "A"+hex;不能使用 hex +="A";这样会导致得到反转的结果。
因为 num % 16 取的是低位的值,num / 16 也是将低位去除。所以每次循环的得到的结果其实都是上一次的高位,因此,每次得到的结果应该放在原来基础的左边,作为高位。
hex += "A" ====> hex = hex + "A"