阿拉伯数字转中文

简单点,解决问题的方式简单点,你又不是个演员。!


public class CnUpperCaser {

    // 整数部分  
    private String integerPart;  
    // 小数部分
    private String floatPart;      
    // 将数字转化为汉字的数组,因为各个实例都要使用所以设为静态 
    private static final char[] cnNumbers={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};    
    // 供分级转化的数组,因为各个实例都要使用所以设为静态  
    private static final char[] series={'元','拾','百','仟','万','拾','百','仟','亿'};  
    /** 构造函数,通过它将阿拉伯数字形式的字符串传入   
     *
     *   @param original
     */   public CnUpperCaser(String original){     
         // 成员变量初始化     
         integerPart="";    
         floatPart="";          
         if(original.contains(".")){ 
             // 如果包含小数点   
             int dotIndex=original.indexOf(".");  
             integerPart=original.substring(0,dotIndex);
             floatPart=original.substring(dotIndex+1);  
             }else{  
                 // 不包含小数点       
                 integerPart=original;     
                 }   
         }     
     /**    * 取得大写形式的字符串    * @return    */  
     public String getCnString(){     
         // 因为是累加所以用StringBuffer     
         StringBuffer sb=new StringBuffer();          
         // 整数部分处理     
         for(int i=0;i<integerPart.length();i++){       
             int number=getNumber(integerPart.charAt(i));              
             sb.append(cnNumbers[number]);       
             sb.append(series[integerPart.length()-1-i]);    
             }         
         // 小数部分处理     
         if(floatPart.length()>1){  
             sb.append("点");      
             for(int i=0;i<floatPart.length();i++){        
                 int number=getNumber(floatPart.charAt(i));                  
                 sb.append(cnNumbers[number]);     
                 }   
             } else{
                sb.append("整"); 
             }        
         // 返回拼接好的字符串     
         return sb.toString();  
         }      
     /**
      * 将字符形式的数字转化为整形数字  
      * 因为所有实例都要用到所以用静态修饰  
      * @param c    
      * @return    
      * */   
     private static int getNumber(char c){     
         String str=String.valueOf(c);       
         return Integer.parseInt(str);   }      
     /**    * @param args    */  
     public static void main(String[] args) {    
         System.out.println(new CnUpperCaser("123456789.12345").getCnString());    
         System.out.println(new CnUpperCaser("123456789").getCnString());     
         System.out.println(new CnUpperCaser(".123456789").getCnString());     
         System.out.println(new CnUpperCaser("0.1234").getCnString());     
         System.out.println(new CnUpperCaser("1").getCnString());     
         System.out.println(new CnUpperCaser("12").getCnString());    
         System.out.println(new CnUpperCaser("123").getCnString());     
         System.out.println(new CnUpperCaser("1234").getCnString());     
         System.out.println(new CnUpperCaser("12345").getCnString());    
         System.out.println(new CnUpperCaser("123456").getCnString());     
         System.out.println(new CnUpperCaser("1234567").getCnString());     
         System.out.println(new CnUpperCaser("12345678").getCnString());     
         System.out.println(new CnUpperCaser("123456789").getCnString());  
         }
     }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值