金额转换,阿拉伯数字的金额转换成 面试编程题

package Test;

public class Test {
	 public static void main(String[] args){
         //测试
         System.out.println(convertNumber(3500908));
         System.out.println(convertNumber(101000001010L));
	 }
	 public static String convertNumber(long number){
         //定义字符数组存储中国数字写法格式
         final char[] chineseNumber = new char[]
         { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };
         //定义字符数组存储中国数字的单位
         final char[] units = new char[]
         { '圆', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟'};
         //定义一个字符串缓冲区对字符进行存储
         StringBuilder sb = new StringBuilder();
         int index=0;
         long lastNumber = 0;
         while(number!=0){
                 lastNumber = number%10;
                 sb.insert(0,units[index++]);  //从字符串左侧开始插入字符
                 sb.insert(0,chineseNumber[(int) lastNumber]);
                 number=number/10;
         }
         //去零操作,通过正则表达式
        return sb.toString().replaceAll("零[拾佰仟]","零").replaceAll("零+亿","亿").replaceAll("零{4}万","零").
         replaceAll("零+万","万").replaceAll("零+圆","圆").replaceAll("零+","零")+"整";
 }


}

输出:

叁佰伍拾万零玖佰零捌圆整
壹仟零壹拾亿零壹仟零壹拾圆整

package Test;

public class Test {
	 public static void main(String[] args){
         //测试
         System.out.println(convertNumber(3500908));
         System.out.println(convertNumber(101000001010L));
	 }
	 public static String convertNumber(long number){
         //定义字符数组存储中国数字写法格式
         final char[] chineseNumber = new char[]
         { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };
         //定义字符数组存储中国数字的单位
         final char[] units = new char[]
         { '圆', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟'};
         //定义一个字符串缓冲区对字符进行存储
         StringBuilder sb = new StringBuilder();
         int index=0;
         long lastNumber = 0;
         while(number!=0){
                 lastNumber = number%10;
                 sb.insert(0,units[index++]);
                 sb.insert(0,chineseNumber[(int) lastNumber]);
                 number=number/10;
         }
         
         
         
         
       //去零操作,通过正则表达式
         String a = sb.toString().replaceAll("零[拾佰仟]","零");//零加上括号内的任意字符替换成零
         a = a.replaceAll("零+亿","亿");
         a = a.replaceAll("零{4}万","零");
         a = a.replaceAll("零+万","万");			//零万替换成万
         a = a.replaceAll("零+圆","圆");
         a = a.replaceAll("零+","零")+"整";   //  X重复1次或多次
         
         return a;
	 }


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值