package com.itheima;
/*10、 金额转换,阿拉伯数字转换成中国传统形式。
例如:1010 0000 1010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整*/
public class Test10 {
//定义两个表。用查表法做
private static final char[] data = new char[] { '零', '壹', '贰', '叁', '肆',
'伍', '陆', '柒', '捌', '玖' };
private static final char[] units = new char[] {
'元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟'
};
public static void main(String[] args) {
System.out.println(convert(101000001010L));
}
public static String convert(long money)
{
//定义一个缓冲区
StringBuffer sbf = new StringBuffer();
int unit = 0;
//循环的功能是取出每一个位置上的数字:取余十,除以十。用查表法来添加对应位置的中文字符
//StringBuffer缓冲区中的内容[壹, 仟, 零, 佰, 壹, 拾, 零, 亿, 零, 仟, 壹, 佰, 零, 拾, 壹, 万, 壹, 仟, 零, 佰, 壹, 拾, 零, 元, ]
while (money != 0)
{
//当前位置插入元,拾,佰....
sbf.insert(0, units[unit++]);
long number = money % 10;
//当前插入位置零, 壹, 贰.....
sbf.insert(0, data[(int) number]);
System.out.println();
money /= 10;
}
//用正则表达式来改变不应该有的零.
return sbf.toString().replaceAll("零[拾佰仟]", "零").replaceAll("零+亿", "亿")
.replaceAll("零+万", "零").replaceAll("零+元", "圆整")
.replaceAll("零+", "零");
}
}
|