问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
BASIC-11 Programming
方法一
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner sc=new Scanner(System.in);
String str=sc.next();
char[] ch= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
long sum=0;
for(int i=0;i<str.length();i++)
{
for(int j=0;j<ch.length;j++)
//判断与数组ch对应值
if(str.charAt(i)==ch[j])
{
//每位乘十六对应位上的次方
sum+=(long)Math.pow(16,str.length()-i-1)*j;
}
}
//输出
System.out.println(sum);
}
}
方法二
import java.math.BigInteger;
import java.util.Scanner;
public class Main2 {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
//定义两个任意大的整数
BigInteger bi = null;
String enter = null;
//接收用户输入的值
enter = input.next();
//以十六进制存储到enter中
bi = new BigInteger(enter,16);
//bi转10进制show
String show = bi.toString(10);
//输出
System.out.println(show);
}
}
方法三
import java.util.Scanner;
public class Main3{
public static void main(String args[]) {
Scanner input=new Scanner(System.in);
//接收用户输入的值
String enter = input.next();
//直接转化为10进制串
String dec=Long.valueOf(enter,16).toString();
//输出
System.out.println(dec);
}
}