java 数字转大写汉字

来源:互联网 发布:网络拓扑类型 编辑:程序博客网 时间:2024/05/02 06:11

package com.javens.test;
import java.util.HashMap;
import java.util.Map;
public class Test1 {
private static int num =0;
public static void main(String[] args) { 
  new Test1().formatTo(100010100);
  } 
public void formatTo(int money){ 
  Map<Integer, String> moneyMap = new HashMap<Integer, String>(); 
Map<Integer, String> moneyMap2 = new HashMap<Integer, String>();
  StringBuffer sb = new StringBuffer(); 
  moneyMap.put(1, "壹"); 
  moneyMap.put(2, "贰");
  moneyMap.put(3, "叁"); 
  moneyMap.put(4, "肆"); 
  moneyMap.put(5, "伍"); 
  moneyMap.put(6, "陆"); 
  moneyMap.put(7, "柒"); 
  moneyMap.put(8, "捌"); 
  moneyMap.put(9, "玖"); 
  moneyMap.put(0, "零"); 
  //moneyMap2.put(1, null); 
  moneyMap2.put(2, "拾"); 
  moneyMap2.put(3, "佰"); 
  moneyMap2.put(4, "仟"); 
  moneyMap2.put(5, "万"); 
  moneyMap2.put(6, "十"); 
  moneyMap2.put(7, "百"); 
  moneyMap2.put(8, "千"); 
  moneyMap2.put(9, "亿"); 
  moneyMap2.put(10, "十"); 
  moneyMap2.put(11, "百"); 
  moneyMap2.put(12, "千"); 
  moneyMap2.put(13, "万"); 
  String moneyString = (money+"").trim().toString(); 
  int moneyLength = moneyString.length(); 
  num = moneyLength; 
 
  boolean flag=false;
  StringBuffer sb1=new StringBuffer(moneyString);
  String moneyString1=sb1.reverse().toString();
  if(moneyLength>=9){
   for(int j=4;j<8;j++){
    Character c2 = moneyString1.charAt(j);  
    Integer key2 = c2.getNumericValue(c2);
    if(key2!=0){
     flag=true;
     break;
    }
   }
  }
  for(int i=0;i<moneyLength;i++){  
   Character c = moneyString.charAt(i);  
   Integer key = c.getNumericValue(c);  
   if(i<moneyLength-1){
    if(key==0){
     if((num==5 && moneyLength<9 && moneyLength>=5) || (num==9 && moneyLength>=9)||(num==5 && moneyLength>=9 && flag==true)){
      sb.append(moneyMap2.get(num));
     }
     if(i+1<moneyLength){
      Character c1 =moneyString.charAt(i+1);
      if(c1.getNumericValue(c1)!=0){
       sb.append(moneyMap.get(key));
      }
     }
    }else{
    
     sb.append(moneyMap.get(key)).append(moneyMap2.get(num));   
    }
    num--;
   }  
   if(i==moneyLength-1&&num==1){
    if(key==0){
     sb.append("元整");
    }else{
     sb.append(moneyMap.get(key)).append("元整");
    }
   } 
  } 
  System.out.println(sb);
  }
}

运行结果:
壹亿零壹万零壹佰元整

原创粉丝点击