阿拉伯数字转换成汉字金额

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;


public class Transform {
 
 public static void main(String[] args){
  
  
  String number = "101000001010";
  String str1 = null;
  String str2 = null;
  
  
  Map numMap = new HashMap();
  numMap.put('0', "零");
  numMap.put('1', "壹");
  numMap.put('2', "贰");
  numMap.put('3', "叁");
  numMap.put('4', "肆");
  numMap.put('5', "伍");
  numMap.put('6', "陆");
  numMap.put('7', "柒");
  numMap.put('8', "捌");
  numMap.put('9', "玖");
  
  
  //去掉小数位,不进行换算.
  if(number.indexOf(".") == -1){
   str1 = number;
  }else{
   str1 = number.substring(0,number.indexOf("."));
   str2 = number.substring(number.indexOf(".")+1);
  }
  
  System.out.println(str1);
  //每隔4位数字,放入到一个集合中.
  ArrayList al = new ArrayList();
  while(true){
   String ss = "";
   if(str1.length() >4){
    ss = str1.substring(str1.length()-4,str1.length());
    str1 = str1.substring(0,str1.length()-4);
    al.add(ss);
   }else{
    
    ss = str1.substring(0);
    for(int k =0;k<(4-str1.length());k++){
     ss="0"+ss;
    }
    al.add(ss);
    break;
   }
  }
  
  String finalStr = "";
  //反转集合
  Collections.reverse(al);
  //拼成最终的字符串.
  for(int i =0;i<al.size();i++){
   char[] cs =((String)al.get(i)).toCharArray();
   if(al.size() == 3 ){
    if(i == 0){
     finalStr += toChinese(cs, numMap)+"亿";
    }else if(i == 1){
     if(toChinese(cs, numMap) == ""){
      finalStr += "零";
     }else{
      finalStr += toChinese(cs, numMap)+"万";
     }
     
    }else{
     finalStr += toChinese(cs, numMap);
    }
   }else if(al.size() == 2 ){
    if(i == 0){
     finalStr += toChinese(cs, numMap)+"万";
    }else{
     finalStr += toChinese(cs, numMap);
    }
   }else if(al.size() == 1){
    finalStr += toChinese(cs, numMap);
   }
  }
  System.out.println(finalStr+"元整");
  
 }
 
 
 
 //把4位数字换成汉字.根据排列组合,共有16中不同.
 public static String toChinese(char[] cs,Map numMap){
  
  //000x -- 1
  if(cs[0]=='0' && cs[1]=='0'&& cs[2]=='0'&& cs[3]!='0'){
   return (String) numMap.get(cs[3]);
  }
  //00x0 -- 2
  else if(cs[0]=='0' && cs[1]=='0'&& cs[2]!='0'&& cs[3]=='0'){
   return numMap.get(cs[2])+"拾";
  }
  //0x00 -- 3
  else if(cs[0]=='0' && cs[1]!='0'&& cs[2]=='0'&& cs[3]=='0'){
   return numMap.get(cs[1])+"佰";
  }
  //x000 -- 4
  else if(cs[0]!='0' && cs[1]=='0'&& cs[2]=='0'&& cs[3]=='0'){
   return numMap.get(cs[0])+"仟";
  }
  //00xx -- 5
  else if(cs[0]=='0' && cs[1]=='0'&& cs[2]!='0'&& cs[3]!='0'){
   return numMap.get(cs[2])+"拾" + numMap.get(cs[3]);
  }
  //0x0x -- 6
  else if(cs[0]=='0' && cs[1]!='0'&& cs[2]=='0'&& cs[3]!='0'){
   return numMap.get(cs[1])+"佰" + numMap.get(cs[2]) + numMap.get(cs[3]);
  }
  //x00x -- 7
  else if(cs[0]!='0' && cs[1]=='0'&& cs[2]=='0'&& cs[3]!='0'){
   return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) + numMap.get(cs[3]);
  }
  //0xxx -- 8
  else if(cs[0]=='0' && cs[1]!='0'&& cs[2]!='0'&& cs[3]!='0'){
   return numMap.get(cs[1])+"佰" + numMap.get(cs[2]) + "拾" + numMap.get(cs[3]);
  }
  //x0xx -- 9
  else if(cs[0]!='0' && cs[1]=='0'&& cs[2]!='0'&& cs[3]!='0'){
   return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) +numMap.get(cs[2]) + "拾" + numMap.get(cs[3]);
  }
  //xxxx -- 10
  else if(cs[0]!='0' && cs[1]!='0'&& cs[2]!='0'&& cs[3]!='0'){
   return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) + "佰" +numMap.get(cs[2]) + "拾" + numMap.get(cs[3]);
  }
  //xxx0 -- 11
  else if(cs[0]!='0' && cs[1]!='0'&& cs[2]!='0'&& cs[3]=='0'){
   return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) + "佰" +numMap.get(cs[2]) + "拾" ;
  }
  //xx00 -- 12
  else if(cs[0]!='0' && cs[1]!='0'&& cs[2]=='0'&& cs[3]=='0'){
   return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) + "佰"  ;
  }
  //0xx0 -- 13
  else if(cs[0]=='0' && cs[1]!='0'&& cs[2]!='0'&& cs[3]=='0'){
   return numMap.get(cs[1])+"佰" + numMap.get(cs[2]) + "拾"  ;
  }
  //xx0x -- 14
  else if(cs[0]!='0' && cs[1]!='0'&& cs[2]=='0'&& cs[3]!='0'){
   return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) + "佰" +numMap.get(cs[2])+numMap.get(cs[3]) ;
  }
  //x0x0 -- 15
  else if(cs[0]!='0' && cs[1]=='0'&& cs[2]!='0'&& cs[3]=='0'){
   return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) +numMap.get(cs[2])+"拾";
  }
  //0000 -- 16
  else{
   return "";
  }
 }
 
 
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值