题解 | #进制转换#
进制转换
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); } }
比较笨的方法,但是比较好理解