Chinaunix首页 | 论坛 | 博客
  • 博客访问: 58891
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 375
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-08 11:31
个人简介

由于我自己也刚刚学会系统编程不久,所以分享的很多都是很基础的东西,希望能够对你有所帮助

文章分类
文章存档

2013年(11)

我的朋友

分类: Java

2013-07-03 11:48:51

**公司的面试题,非得写出代码,发到博客分享一下吧,有问题希望大家多指正,互相学习,小弟是小虾米!

Java代码
  1. package com.pyc.maven.demo.jerry;   
  2.   
  3. import java.util.Arrays;   
  4. import java.util.HashMap;   
  5. import java.util.Map;   
  6.   
  7. /**  
  8.  *   
  9.  * @author boy  
  10.  *  
  11.  */  
  12. public class Analysis {   
  13.        
  14.     private final static Map unitMap = new HashMap();   
  15.        
  16.     private final static Map amountMap = new HashMap();   
  17.        
  18.     static{   
  19.         unitMap.put('亿'100000000);   
  20.         unitMap.put('万'10000);   
  21.         unitMap.put('千'1000);   
  22.         unitMap.put('佰'100);   
  23.         unitMap.put('拾'10);   
  24.         unitMap.put('圆'1);   
  25.            
  26.         amountMap.put('玖'9);   
  27.         amountMap.put('捌'8);   
  28.         amountMap.put('柒'7);   
  29.         amountMap.put('陆'6);   
  30.         amountMap.put('伍'5);   
  31.         amountMap.put('肆'4);   
  32.         amountMap.put('叁'3);   
  33.         amountMap.put('贰'2);   
  34.         amountMap.put('壹'1);   
  35.     }   
  36.   
  37.     public static void main(String[] args) {   
  38.            
  39.         long start = System.currentTimeMillis();   
  40.            
  41.            
  42.         System.out.println(analysis("壹佰贰拾叁万"));   
  43.            
  44.         System.out.println(analysis("玖拾玖"));   
  45.            
  46.         System.out.println(analysis("壹万零叁佰"));   
  47.            
  48.         System.out.println(analysis("壹万零叁"));   
  49.            
  50.         System.out.println(analysis("叁千万"));   
  51.            
  52.            
  53.         long end = System.currentTimeMillis();   
  54.            
  55.         System.err.println(end - start);   
  56.     }   
  57.        
  58.     /**  
  59.      * 大写的人民币金额转换为数字  
  60.      * @param target  
  61.      * @return  
  62.      */  
  63.     public static int analysis(String target){   
  64.            
  65.         if(null == target || "".equals(target))   
  66.             return 0;   
  67.            
  68.         if(!amountMap.containsKey(target.charAt(0))){   
  69.             target = "壹"+target;   
  70.         }   
  71.         if(!unitMap.containsKey(target.charAt(target.length()-1))){   
  72.             target = target+"圆";   
  73.         }   
  74.            
  75.         char[] cc = target.toCharArray();   
  76.            
  77.            
  78.         System.out.println(Arrays.toString(cc));   
  79.         System.out.println("************************************");   
  80.            
  81.         /**  
  82.          * 中间变量  
  83.          */  
  84.         int temp = 0;   
  85.            
  86.         /**  
  87.          * 之前取到的单位的值  
  88.          */  
  89.         int preUnitValue = 0;   
  90.            
  91.         /**  
  92.          * 结果  
  93.          */  
  94.         int result = 0;   
  95.            
  96.         for(char c : cc){   
  97.                
  98.             /**  
  99.              * 拿到数字  
  100.              */  
  101.             if(isAmount(c)){   
  102.                 temp = amountMap.get(c);   
  103.             }   
  104.                
  105.             /**  
  106.              * 拿到单位  
  107.              */  
  108.             else if(isUnit(c)){   
  109.                 int unitValue = unitMap.get(c);   
  110.                 /**  
  111.                  * 单位<=单位模式,相乘  
  112.                  * 单位>单位模式,相加  
  113.                  */  
  114.                 if(preUnitValue !=0 && unitValue >= preUnitValue){   
  115.                     result = (result+temp) * unitValue;   
  116.                 }else{   
  117.                     result = result + temp*unitValue;   
  118.                 }   
  119.                 preUnitValue = unitValue;   
  120.                 temp = 0;   
  121.             }   
  122.         }   
  123.            
  124.         return result;   
  125.     }   
  126.        
  127.     /**  
  128.      * 判断是否是数字  
  129.      * @param c  
  130.      * @return  
  131.      */  
  132.     private static boolean isAmount(char c){   
  133.         return amountMap.containsKey(c);   
  134.     }   
  135.        
  136.     /**  
  137.      * 判断是否是单位  
  138.      * @param c  
  139.      * @return  
  140.      */  
  141.     private static boolean isUnit(char c){   
  142.         return unitMap.containsKey(c);   
  143.     }   
  144. }  
阅读(3071) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~