Java金额转换_阿拉伯数字转换成中国大写数字
来源:互联网 发布:帝国cms 调用tags标签 编辑:程序博客网 时间:2024/04/30 21:33
这个题目我在网上看到有好多种做法,我自己也想出了一种做法
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;/* * 思路: * 1.定义三张表,存储中文数字和货币单位。 * 2.键盘录入使用IO流的BufferedReader进行接收键盘录入。 * 3.把录入的阿拉伯数字弄成字符数组,如果有小数位就先分割成整数位和小数位。 * 4.先处理整数位再处理小数位,把每个数字所在位置的角标对着中文数字的表进行转换, * 转换完后再从对应的位置插入货币单位。 * 5.把格式进行修正匹配后打印输出。 */public class MoneyConvert {//创建中文大写数字的表和货币单位的表static String[] cnNumTab = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒","捌", "玖"};static String[] integerUnitTab = {"", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"};static String[] decimalUnitTab = {"角", "分", "厘"};public static void main(String[] args) {System.out.println("请输入金额:");//创建流对象,用于接收键盘录入的数据BufferedReader in = new BufferedReader(new InputStreamReader(System.in));try {//把键盘接收的金额数据的小数位和整数位分隔开String str = in.readLine();String[] strArr = str.split("\\.");//把分隔好的数位金额数据分别打散成字符数组char[] chNumArrInteger = strArr[0].toCharArray();//把阿拉伯数字转换为中文的大写数字String[] convertIntegerNum = convertUpper(chNumArrInteger);//定义合拼数字和单位用的容器StringBuilder container = new StringBuilder("圆整");//嵌入货币单位到转换好的中文大写数字里去for(int x = convertIntegerNum.length -1, y = 0; x >=0; x--, y++) {String num = convertIntegerNum[x];if(num.equals("零")) {//判断数位是否是仟万亿的位置,是则插入单位if(y == 4 || y == 8)container.insert(0, num+integerUnitTab[y]);elsecontainer.insert(0, num);} else {container.insert(0, num+integerUnitTab[y]);}}//如果有小数位,则对小数位的数也进行同样的转换操作if(strArr.length == 2) {int len = container.length();container.replace(len - 2, len, "圆");char[] chNumArrDecimal = strArr[1].toCharArray();String[] convertDecimalNum = convertUpper(chNumArrDecimal);//嵌入货币单位到转换好的中文大写数字里去for (int x = 0; x < convertDecimalNum.length; x++) {container.append(convertDecimalNum[x]+decimalUnitTab[x]);}}//格式修正String put = container.toString();put = put.replaceAll("佰零+万", "佰万");put = put.replaceAll("佰零+亿", "佰亿");put = put.replaceAll("仟零+万", "仟万");put = put.replaceAll("仟零+亿", "仟亿");put = put.replaceAll("零+", "零");put = put.replaceAll("零万", "万");put = put.replaceAll("零万零", "零");put = put.replaceAll("拾零", "拾");put = put.replaceAll("零圆", "圆");//完成后打印输出System.out.println("该金额的大写形式为:"+put);} catch (NumberFormatException e) {System.out.println("输入错误,请输入有效的金额数字");} catch (IOException e) {e.printStackTrace();}//键盘录入接收完数据后流会自然断开了,无需调用关流资源的方法了}//把阿拉伯数字转换为中文的大写数字public static String[] convertUpper(char[] arr) {String[] convertNum = new String[arr.length];for(int x = 0; x < arr.length; x++) {int num = Integer.parseInt(arr[x]+"");convertNum[x] = cnNumTab[num];}return convertNum;}}
方法貌似有些麻烦,还在学习中,写得可能不太好。
0 0
- Java金额转换_阿拉伯数字转换成中国大写数字
- 大写金额转换成阿拉伯数字金额
- java 阿拉伯数字转换成大写数字
- java 中文大写数字 转换成 阿拉伯数字
- 阿拉伯数字转换成大写数字
- 阿拉伯数字转换为中国的大写数字
- 用java代码将阿拉伯数字金额转换成中文大写
- 阿拉伯数字转换成中文大写金额
- js将阿拉伯数字转换成大写金额
- Java实现阿拉伯数字转换成中文大写数字,以及中文大写数字到阿拉伯数字的转换。
- Java实现阿拉伯数字转换成中文大写数字,以及中文大写数字到阿拉伯数字的转换
- JAVA数字大写金额转换
- JAVA数字大写金额转换
- java-数字金额大写转换
- 阿拉伯数字转换为大写金额
- Java数字金额转换为大写金额
- 把阿拉伯数字的金额转换为中文大写数字
- 数字转换成大写金额
- 基于jQuery+JSON 二级联动效果
- iOS真机测试
- MAC OS X 和 Windows下XAMPP 添加虚拟主机+ host重定向
- MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
- IE系列浏览器把application/json响应视为文件,并尝试下载
- Java金额转换_阿拉伯数字转换成中国大写数字
- MFC学习(13)解决回车键 ESC 默认关闭窗口的一般方法——续
- linux平台学x86汇编(五):使用gdb调试汇编程序
- POJ 2151 Check the difficulty of problems
- cocos2dx3.0触摸机制
- iOS动画框架 - iCarouselAnimation
- linux平台学x86汇编(六):数据的传送
- 性能测试(并发负载压力)测试分析
- 小红伞引擎学习