华为机试(5)进制转换

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里的一个类

猜你喜欢

转载自blog.csdn.net/hxl0925/article/details/89371148