1>题目描述
- 题目描述:
- 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
- 输入描述:
- 输入一个十六进制的数值字符串。注意:一个用例会同时有多组输入数据,请参考帖子
- 输出描述:
- 输出该数值的十进制字符串。不同组的测试用例用\n隔开。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7f3099524ac5e1c9c6d3f6ee2a4aa91c.png)
2>方法一
- 1、首先利用substring截取除了0x后面的数字
- 2、根据十六进制转十进制规律分别对A、B、C、D、E、F做处理。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int sum = 0;
while(sc.hasNext()){
String s = sc.nextLine().substring(2);
int size = s.length();
for(int i=0;i<size;i++){
char c = s.charAt(i);
switch(c){
case 'A':
sum+=10*Math.pow(16,size-i-1);
break;
case 'B':
sum+=11*Math.pow(16,size-i-1);
break;
case 'C':
sum+=12*Math.pow(16,size-i-1);
break;
case 'D':
sum+=13*Math.pow(16,size-i-1);
break;
case 'E':
sum+=14*Math.pow(16,size-i-1);
break;
case 'F':
sum+=15*Math.pow(16,size-i-1);
break;
default:
sum+= (c-'0')*Math.pow(16,size-i-1);
break;
}
}
System.out.println(sum);
sum = 0;
}
}
}
3>方法二
- 利用Integer中的valueOf方法接受一个数字字符串,和它对应的进制即可转成十进制
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext())
{
String str = scanner.nextLine();
System.out.println(Integer.valueOf(str.substring(2),16).toString());
}
}
}