package java_huaweijishi;
import java.util.*;
/**
* 题目:写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
* @author hexiaoli
* 思考:1)用Java自带的,Integer.decode(需要转换的字符串)
* 2)用Java自带的,Integer.parseInt(需要转换的字符串.substring(2),16)
* 3)自己编写实现功能,需要两个字符串常量indexString1 、indexString2 ,再转换
*/
public class Conversion {
public static int conversion16to10(String str) {
String indexString1 = "0123456789ABCDEF";
String indexString2 = "0123456789abcdef";
//屏蔽0x的影响
str = str.substring(2);
int length = str.length();
int conversion =0;
int index = 0;
for(int i =length-1;i>=0;i--) {
index = indexString1.indexOf(str.charAt(i));
if(index == -1) {
index = indexString2.indexOf(str.charAt(i));
}
conversion += index*(int)Math.pow(16, length-1-i);
}
return conversion;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//区别 next()和nextLine();
//nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。
//next()会自动消去有效字符前的空格,只返回输入的字符,不能得到带空格的字符串。
//String string = input.nextLine();
//方法一:decode,该方法的作用是将 String 解码为 Integer。接受十进制、十六进制和八进制数字。
//方法二:
while(input.hasNext()) {
String str =input.next();
//方法一
System.out.println(Integer.decode(str));
//str.substring(2)表示去除0x
//方法二
System.out.println(Integer.parseInt(str.substring(2),16));
//方法三
int out = conversion16to10(str);
System.out.println(out);
}
input.close();
}
}
未考虑 大数情况。
BigInteger不是基本数据类型之一,有点像String,是Java里的一个类