该算法根据数字和汉字大写的区别和规律获得每个数字的单位量度,将其放在相应的位置:(代码来自《疯狂java讲义》)
public class Num2Rmb {
private String[] hanArr={"零","壹","贰","叁","肆","伍",
"陆","柒","捌","玖"};
//根据数字的位置设置相应的单位量
private String[] unitArr={"拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟"};
private String toHanStr(String numStr)
{
String result="";
int numLen=numStr.length();
for (int i=0;i<numLen; i++)
{
int num=numStr.charAt(i)-48;
//注意第一个数字和最后一个数字
if(i!=numLen-1 && num!=0)
{
result+=hanArr[num]+unitArr[numLen-2-i];
}
else
{
result+=hanArr[num];
}
}
return result;
}
public static void main(String[] args)
{
Num2Rmb nr = new Num2Rmb();
System.out.println(nr.toHanStr("633779433451"));
//陆仟叁佰叁拾柒亿柒仟玖佰肆拾叁万叁仟肆佰伍拾壹
}
}