Java 十六进制转十进制

十六进制转十进制:

  1 public class Test02{
  2 
  3     public static void main(String[] args){
  4         while(true)
  5         {
  6             System.out.print("Please input an Hexadecimal(input \"exit\" or \"bye\" quit):");
  7 
  8             Scanner s = new Scanner(System.in);
  9 
 10     //输入字符串直接都转换成小写
 11             String str = s.next().toLowerCase();
 12 
 13 
 14             //退出函数
 15             method m = new method();
 16             if(m.Data_Judegment(str))
 17                 break;
 18     
 19 
 20     //判断输入的字符串是否满足要求
 21             Data_Judgement DJ = new Data_Judgement();
 22             boolean b1 = DJ.Judgement_Int(str);
 23             if(b1 == false)
 24             {
 25                 continue;
 26             }
 27 
 28     //十六进制转换成十进制
 29             DataConvert DC = new DataConvert();
 30             DC.Decimal_To_Hexadecimal(str);
 31         }
 32 
 33     }
 34 }
 35 
 36  
 37 //十六进制转换成十进制
 38 
 39 
 40 class DataConvert{
 41     public void Decimal_To_Hexadecimal(String n){
 42         long L_sum = 0;
 43         int x = 0;
 44 
 45         int j = 0;
 46         for(int i=n.length();i>0;i--){
 47             //System.out.println(n.charAt(i-1));
 48             switch(n.charAt(i-1)){
 49 
 50     //因为上面已经对输入字符串转换,可以注释掉大写字母的case语句
 51             case 'a':
 52             case 'A':
 53                 x = 10;
 54                 break;
 55             case 'b':
 56             case 'B':
 57                 x = 11;
 58                 break;
 59             case 'c':
 60             case 'C':
 61                 x = 12;
 62                 break;
 63             case 'd':
 64             case 'D':
 65                 x = 13;
 66                 break;
 67             case 'e':
 68             case 'E':
 69                 x = 14;
 70                 break;
 71             case 'f':
 72             case 'F':
 73                 x = 15;
 74                 break;
 75             default :
 76                 //‘0-9’ 将单个字符转换成整型,直接用(int)强制转换会转成ASCII值
 77                 x = n.charAt(i-1) - '0';
 78                 //System.out.println(x);
 79                 break;
 80             }
 81             L_sum += x*Math.pow(16,j++);
 82         }
 83 
 84         System.out.println(L_sum);
 85     }
 86 };
 87 
 88 
 89 //判断输入字符串是否满足0-9、a-f、A-F
 90 
 91 
 92 class Data_Judgement{
 93     public boolean Judgement_Int(String n){
 94 
 95         for(int i=0;i<n.length();i++){
 96             if(!n.matches("[a-fA-F0-9_\u4e00-\u9fa5]*")){
 97                 System.out.println("输入字符串不正确!");
 98                 return false;
 99             }
100         }
101         return true;
102 
103     }
104 };
105 
106 // 退出函数
107 
108 
109 class method{
110     boolean Data_Judegment(String str)
111     {
112         //trim() 去除字符串两边的不可见字符,包括 空格、回车符、制表符等
113         if("exit".equals(str.trim()) || "bye".equals(str.trim()))
114             return true;
115         else
116             return false;
117     }
118 };
View Code

 

 

 



posted @ 2016-01-04 16:58  njuptlwh  阅读(281)  评论(0编辑  收藏  举报