问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
在Java中有一个特定的类Long,里面有一个方法Long.parseLong(s,16)就是将字符串s的十六进制转换成十进制
源代码:
import java.util.*;
public class Main{
public static void main(String []args)
{
Scanner input = new Scanner(System.in);
String s = input.next();
input.close();
long sum = Long.parseLong(s,16);
System.out.println(sum);
}
}
还有就是通过判断来写,就是先将输入的字符串转成字符数组,然后来判断是不是10-15那几个特殊字符,然后通过16的次方来判断
具体代码:
import java.util.*;
public class Test11 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String s = input.next();
int n = s.length();
char c[] = s.toCharArray();
long sum = 0;
for(int i = 0;i<s.length();i++)
{
if((int)c[i]-48>9)
{
if(c[i] == 'A')
{
sum += 10*Math.pow(16, n-i-1);
}
if(c[i] == 'B')
{
sum += 11*Math.pow(16, n-i-1);
}
if(c[i] == 'C')
{
sum += 12*Math.pow(16, n-i-1);
}
if(c[i] == 'D')
{
sum += 13*Math.pow(16, n-i-1);
}
if(c[i] == 'E')
{
sum += 14*Math.pow(16, n-i-1);
}
if(c[i] == 'F')
{
sum += 15*Math.pow(16, n-i-1);
}
}
else
{
sum += ((int)c[i]-48)*Math.pow(16, n-i-1);
}
}
System.out.println(sum);
}
}