//ChangeRMB.java
/**
*
* programmed by HuangHeliang
* 2009.04.15 10:20:51
*
*/
//package com.avtech.hhl;
import java.io.*;
public final class ChangeRMB {
//每个数字对应的大写
private static final String[] num = {
"零", "壹", "贰", "叁", "肆", "伍",
"陆", "柒", "捌", "玖",
};
//从低到高排列的单位
private static final String[] bit = {
"圆", "拾", "佰", "仟", "万", "拾",
"佰", "仟", "亿", "拾", "佰", "仟",
"万", "拾", "佰", "仟", "亿"
};
//金额里面的角和分
private static final String[] jf={
"角","分"
};
/**
* 处理金额的整数部分,返回"...圆整"
* @param integer
* @return String
* @throws Exception
*/
public static String praseUpcaseRMB(String integer)throws Exception{
StringBuilder sbdr=new StringBuilder("");
int j=integer.length();
if(j>bit.length){
throw new Exception("\n只能处理亿万亿以内的数据(含亿万亿)!");
}
char[] rmb=integer.toCharArray();
for (int i = 0; i 壹佰亿陆仟伍佰万肆仟伍佰捌拾叁圆零伍分
*/
if(bit[bitLocate].equals("仟")){
String s=sbdr.toString();
if(!s.endsWith(bit[bitLocate+1]) && s.length()>0){
if (s.endsWith(num[0])) {
sbdr.deleteCharAt(sbdr.length() - 1);
}
sbdr.append(bit[bitLocate+1]);
}
}
sbdr.append(num[numLocate]);
sbdr.append(bit[bitLocate]);
}//end for
/*
* 去掉结尾"零"后,补全
*/
if(sbdr.toString().endsWith(num[0])){
sbdr.deleteCharAt(sbdr.length()-1);
sbdr.append("圆整");
}else{
sbdr.append("整");
}
return sbdr.toString();
}
/**
* 处理带小数的金额,整数部分交由上一个方法处理,小数部分自己处理
* @param integer
* @param decimal
* @return String
* @throws Exception
*/
public static String praseUpcaseRMB(String integer, String decimal)throws Exception{
String ret=ChangeRMB.praseUpcaseRMB(integer);
ret=ret.split("整")[0]; //处理整数部分
StringBuilder sbdr=new StringBuilder("");
sbdr.append(ret);
char[] rmbjf=decimal.toCharArray();
for(int i=0;i rmbDouble){
theInt-=1;
}
double theDecimal=rmbDouble-theInt;
String integer=new Long((long)theInt).toString();
String decimal=""+Math.round(theDecimal*100);
if(decimal.equals("0")){
result=ChangeRMB.praseUpcaseRMB(integer);
}else{
result=ChangeRMB.praseUpcaseRMB(integer, decimal);
}
return result;
}
public static void main(String[] args) throws Exception{
System.out.print("输入小写人民币金额:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String in = br.readLine();
String result=ChangeRMB.doChangeRMB(in);
System.out.println("\n"+"------------转换结果------------");
System.out.println(result);
double d=54628569856.68;
String ret=ChangeRMB.doChangeRMB(d);
System.out.println("\n"+"------------转换结果------------");
System.out.println(ret);
}
}