题解 | #进制转换#
进制转换
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");
}
}
}

查看26道真题和解析