用查表法然后用正则处理字符串比较简单
- 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;
- }
- }
复制代码 |