描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
输入描述:
输入一个十六进制的数值字符串。注意:一个用例会同时有多组输入数据,请参考帖子https://www.nowcoder.com/discuss/276处理多组输入的问题。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例1
输入:
0xA
0xAA
输出:
10
170
解X
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String s = sc.nextLine().substring(2);
System.out.println(Integer.parseInt(s, 16));
}
}
}
注
- 将多进制数转换为10进制数的工具方法Integer.parseInt(s, 16)
解_1
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String s = sc.nextLine().substring(2).toLowerCase();
int value = 0;
char c;
int n;
int length = s.length();
for (int i = length - 1; i >= 0; i--) {
c = s.charAt(i);
if (c >= '0' && c <= '9') {
n = c - '0';
} else {
n = c - 'a' + 10;
}
value += n * Math.pow(16, length - (i + 1));
}
System.out.println(value);
}
}
}
注
- 计算a的n次方math方法:Math.pow(a,n)
解_2
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String s = sc.next().substring(2);
int n = 0;
int count = 0;
int temp = 0;
char ch;
while (count < s.length()) {
ch = s.charAt(s.length() - count - 1);
if (ch >= '0' && ch <= '9') {
temp = ch - '0';
} else if (ch >= 'A' && ch <= 'Z') {
temp = ch - 'A' + 10;
} else if (ch >= 'a' && ch <= 'z') {
temp = ch - 'a' + 10;
} else {
break;
}
n += temp * Math.pow(16, count);
count++;
}
System.out.println(n);
}
}
}