| 用查表法然后用正则处理字符串比较简单 
 复制代码import java.util.Scanner;
//接收键盘录入的一个整数转化为金额形式
/*//思路:读取键盘录入,建立查表数组进行查表,存入字符串缓存区,用正则来处理不合格格式
最大到万亿*/
public class DigitalConversion {
        public static void main(String[] args) {
                //接收键盘录入的一个整数
                Scanner in=new Scanner(System.in);
                //定义接收类型为一个Long的数
                Long digital=in.nextLong();
                System.out.println(conversion(digital));
        }
        //定义查表功能,返回字符串
        public static String conversion(Long num)
        {
                //定义大写查表数组
                char[] arr1={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};
                //定义金额数组
                String[] arr2={"","整","拾","佰","仟","萬","拾","佰","仟","亿","拾","佰","仟","萬"};
                //获取数字的字符数组
                char[] arr=(num+"").toCharArray();
//                创建字符缓存区
                StringBuilder sb=new StringBuilder();
                //反向遍历数组
                for(int i=0;i<arr.length;i++)
                {
                        //将每个字符转为数字
                        int count=Integer.parseInt(arr[i]+"");
                        //查表,对应的中文数字、金额数字
                        sb.append(arr1[count]+arr2[arr.length-i]);
                }
                //处理不符合规则字符串,零亿、零萬、改为亿、萬
                
                String str1=sb.toString().replaceAll("零[仟佰拾]","零");
                str1=str1.replaceAll("零+", "零");
                str1=str1.replaceAll("零+亿", "亿").replaceAll("零+萬", "萬").replaceAll("零+整", "整");
                str1=str1.replaceAll("亿萬", "萬");
                return str1;
        }
}
 |