题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { int num = 0; // 去掉16进制的标识符,并且做一个逆序,让它的位数(16的指数)和索引保持一致 StringBuilder builder = new StringBuilder(in.nextLine().substring(2)).reverse(); for (int i = 0; i < builder.length(); i++) { int y = 1; for (int x = 0; x < i; x++) { //16进制,现在是第几位,就是16的几次方 y = y * 16; } // 计算出这一位上代表的真实数值是多少,比如说最后一位的1代表的就是1,但是倒数第二位的1代表16,但是由于在11行做了逆序,所以最后一位就是第一位,1*16的0次方,索引也是0,倒数第二位变成了第二位,1*16的1次方,索引也是1; switch (builder.charAt(i)) { case 'A': num += (10 * y); break; case 'B': num += (11 * y); break; case 'C': num += (12 * y); break; case 'D': num += (13 * y); break; case 'E': num += (14 * y); break; case 'F': num += (15 * y); break; default: num += (Integer.valueOf(builder.charAt(i)+"") * y); break; } } System.out.println(num + "\n"); } } }