005进制转换
题目描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。
示例1
输入
0xA
输出
10
我的解答
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
String s = "";
String target = "";
while (input.hasNextLine()) {
//获取输入 并转换成大写
s = input.nextLine().toUpperCase();
//去掉前面的0X
target = s.substring(2);
//分割成一个字符 4396变成{4,3,9,6}
String[] targetsplit = target.split("", target.length());
//进制转换结果
double result = 0;
for (int i = 0; i < targetsplit.length; i++) {
int j = 0;
//targetsplit[targetsplit.length - i - 1]从后往前取
//switch case 遇到ABCDEF转换对应数字 否则直接转换
switch (targetsplit[targetsplit.length - i - 1]) {
case "A":
j = 10;
break;
case "B":
j = 11;
break;
case "C":
j = 12;
break;
case "D":
j = 13;
break;
case "E":
j = 14;
break;
case "F":
j = 15;
break;
default:
j = Integer.parseInt(targetsplit[targetsplit.length - i - 1]);
break;
}
//pow(16,i) 16的i次方 i从0开始 double类型
result = result + j * Math.pow(16, i);
}
//int 4396 double 4396.0
System.out.println((int)result);
}
}
}
//另一个处理方法 字符的ascii码
//if (ch >= '0' && ch <= '9') {
// j = ch - '0';
//} else if (ch >= 'A' && ch <= 'Z') {
// j = ch - 'A' + 10;
//}
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
String s = "";
String target = "";
while (input.hasNextLine()) {
s = input.nextLine().toUpperCase();
//去掉0X
target = s.substring(2);
//Long.parseLong(target, 16);把16进制的目标转换成10进制
long result= Long.parseLong(target, 16);
System.out.println(result);
}
}
}

浙公网安备 33010602011771号