华为机试(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里的一个类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值