public class Test9 {
public static void main(String[] args) {
// 测试
Scanner sc=new Scanner(System.in);
long l= sc.nextLong();
if(l>9999999999999l){
System.out.println("数值超过十万亿不能转换");
}else{
System.out.println(convertNumber(l));
}
}
public static String convertNumber(long number) {
// 定义字符数组存储中国数字写法格式
char[] chineseNumber = new char[] { '零', '壹', '贰', '叁', '肆', '伍',
'陆', '柒', '捌', '玖' };
// 定义字符数组存储中国数字的单位
char[] units = new char[] { '圆', '拾', '佰', '仟', '万', '拾', '佰',
'仟', '亿', '拾', '佰', '仟' ,'万'};
//将数值转换为字符串型在转换为字符数组
char[] nums=Long.toString(number).toCharArray();
//定义一个可变字符串;
StringBuffer sb = new StringBuffer();
int index=0;
//先将字符串写出
for (int i = 0; i < nums.length; i++) {
sb.insert(0,units[index++]);
sb.insert(0,chineseNumber[Integer.valueOf(""+nums[nums.length-i-1])]);
}
//通过不断的测试去调试字符串,使它符合要求
return (sb.toString().replaceAll("零[仟佰拾]", "零").replaceAll("[零]+", "零").replaceAll("零亿", "亿").replaceAll("零万", "万")
.replaceAll("零圆", "圆").replaceAll("亿万", "亿零")+"整").replaceAll("零圆整", "整");
}
}
|