
解析: 这题一开始试了几种方法都有点啰嗦,后来学习了其他人的方法,我发现从十六进制转十进制逆推出十进制转十六进制会很简便。比如十六进制的11,(个位数)1+(十六位数)1*16=17。
下面是具体的思路,主要用到了%、/、不同进制间的关系、整型Int的特点等知识点。
直接上图:下面是17,255,256三个十进制数转成十六进制的分析



橙色字体部分就是将一个十进制数拆开后转换成的十六进制数,将转换后的结果从后往前加起来就是最终的结果了。
package _3_5_test;
import java.util.Scanner;
import _12_26_test.eleven;
/*
* 十进制转十六进制
* 关键两步:
* a%16
* a/16
* */
public class ThirtySix {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int Inte = scanner.nextInt();
StringBuffer hexa = new StringBuffer();
// 如果接收到的十进制数是0,直接输出十六进制的0
if (Inte == 0) {
hexa.append("0");
System.out.println(hexa);
} else {
while (Inte > 0) {
hexa = hexa.append(toHexa(Inte % 16));
Inte /= 16;
}
// 将字符串进行反向排列
hexa = hexa.reverse();
System.out.println(hexa);
}
}
// 自定义一个将十进制数转换成16进制数的方法
public static String toHexa(int i) {
String s = "";
switch (i) {
case 0:
s = "0";
break;
case 1:
s = "1";
break;
case 2:
s = "2";
break;
case 3:
s = "3";
break;
case 4:
s = "4";
break;
case 5:
s = "5";
break;
case 6:
s = "6";
break;
case 7:
s = "7";
break;
case 8:
s = "8";
break;
case 9:
s = "9";
break;
case 10:
s = "A";
break;
case 11:
s = "B";
break;
case 12:
s = "C";
break;
case 13:
s = "D";
break;
case 14:
s = "E";
break;
case 15:
s = "F";
break;
default:
break;
}
return s;
}
}