写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )

写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )

输入描述:

输入一个十六进制的数值字符串。

输出描述:

输出该数值的十进制字符串。

输入例子:

0xA

输出例子:

10

输入例子:

0x76E

输出例子:

1902

import java.util.Scanner;
/**
 * 2016年8月16日
 * @author 犀牛先生
 *基本思路:(1)获取输入的字符串及其长度
 *        (2)获得对应字符对应的十进制数字
 *        (3)计算得到输入十六进制数字对应的十进制数字
 *难点:装箱与拆箱   包装类
 */

public class test003{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);

        while(sc.hasNext()){
                int s3=0,s5=0;
                String s = sc.next();                   //获取输入的字符串
                int sl = s.length();                    //获得字符串的长度
                for(int i=2;i<s.length();i++){
                    String s2 = s.substring(i,i+1);     //获得字符串中指定位置的字符
                    s3 = strtoint(s2);                  //得到字符对应的十进制数
                   //计算得到对应的十进制数
                    s5 += (int) ((int) s3*Math.pow(16,s.length()-i-1));
                    }


                Integer s4 = new Integer(s5);//将int数据类型变为包装类
                String num3 = Integer.toString(s4);//将Integer包装类变为String类
                System.out.println(num3);

        }
        sc.close();
    }

    //此方法功能:将十六进制字符和十进制数字一一映射,并返回十进制值
    private static int strtoint(String s2) {                
        int s3=0;

        if(s2.equals("0")){
             s3 = 0;
        }else if(s2.equals("1")){
             s3 = 1;
        }else if(s2.equals("2")){
             s3 = 2;
        }else if(s2.equals("3")){
             s3 = 3;
        }else if(s2.equals("4")){
             s3 = 4;
        }else if(s2.equals("5")){
             s3 = 5;
        }else if(s2.equals("6")){
             s3 = 6;
        }else if(s2.equals("7")){
             s3 = 7;
        }else if(s2.equals("8")){
             s3 = 8;
        }else if(s2.equals("9")){
             s3 = 9;
        }else if(s2.equals("A")){
             s3 = 10;
        }else if(s2.equals("B")){
             s3 = 11;
        }else if(s2.equals("C")){
             s3 = 12;
        }else if(s2.equals("D")){
             s3 = 13;
        }else if(s2.equals("E")){
             s3 = 14;
        }else if(s2.equals("F")){
             s3 = 15;
        }else{
            System.out.println("您输入的有误,请输入16进制字符!");
        }
        return s3;
    }   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值