题解 | #进制转换#
进制转换
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 的区别
String num = in.nextLine();
char[] chars = num.toCharArray();
char[] nums = new char[num.length() - 2];
for (int i = 2, j = 0; i < chars.length && j < nums.length; i++, j++) {
nums[j] = chars[i];
}
int a = 0, sum = 0, m = 0;
for (int length = nums.length - 1; length >= 0; length--) {
char numc = nums[length];
switch (numc) {
case 'A':
a = 10;
break;
case 'B':
a = 11;
break;
case 'C':
a = 12;
break;
case 'D':
a = 13;
break;
case 'E':
a = 14;
break;
case 'F':
a = 15;
break;
case '0':
a = 0;
break;
case '1':
a = 1;
break;
case '2':
a = 2;
break;
case '3':
a = 3;
break;
case '4':
a = 4;
break;
case '5':
a = 5;
break;
case '6':
a = 6;
break;
case '7':
a = 7;
break;
case '8':
a = 8;
break;
case '9':
a = 9;
break;
}
if (m == 0) {
sum += a;
} else {
// 16的幂次方
for (int i = 1; i <= m; i++) {
a *= 16;
}
sum += a;
}
m++;
}
System.out.println(sum);
}
}
比较笨的方法,但是比较好理解
阿里云工作强度 727人发布