问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
String a = sc.next();
int number=0;
for(int i=0;i<a.length();i++) {
char x = a.charAt(i);
int m =zhuanhuan(x);
number= number+(int)Math.pow(16,a.length()-i-1)*m;
// System.out.println(x);
}
System.out.println(number);
}
public static int zhuanhuan(char a) {
int number = 0;
switch(a){
case '0':
number=0;
break;
case '1':
number=1;
break;
case '2':
number=2;
break;
case '3':
number=3;
break;
case '4':
number=4;
break;
case '5':
number=5;
break;
case '6':
number=6;
break;
case '7':
number=7;
break;
case '8':
number=8;
break;
case '9':
number=9;
break;
case 'A':
number=10;
break;
case 'B':
number=11;
break;
case 'C':
number=12;
break;
case 'D':
number=13;
break;
case 'E':
number=14;
break;
case 'F':
number=15;
break;
default:
number=0;
break;
}
return number;
}
}
只得了75分 最后一个数据可能超过int范围,将int改成long
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
String a = sc.next();
long number=0;
for(int i=0;i<a.length();i++) {
char x = a.charAt(i);
int m =zhuanhuan(x);
number= number+(long)Math.pow(16,a.length()-i-1)*m;
// System.out.println(x);
}
System.out.println(number);
}
public static int zhuanhuan(char a) {
int number = 0;
switch(a){
case '0':
number=0;
break;
case '1':
number=1;
break;
case '2':
number=2;
break;
case '3':
number=3;
break;
case '4':
number=4;
break;
case '5':
number=5;
break;
case '6':
number=6;
break;
case '7':
number=7;
break;
case '8':
number=8;
break;
case '9':
number=9;
break;
case 'A':
number=10;
break;
case 'B':
number=11;
break;
case 'C':
number=12;
break;
case 'D':
number=13;
break;
case 'E':
number=14;
break;
case 'F':
number=15;
break;
default:
number=0;
break;
}
return number;
}
}
网友评论