java练习:金额转换,阿拉伯数字转换成中文传统形式
需求:金额转换,阿拉伯数字转换成中文传统形式 ,例如 101000001010 转为 壹仟零壹拾亿零壹仟零壹拾圆整
最终版:
import java.util.Scanner;
public class Test {public static void main(String[] args) {long num = 101000001010l;String[] digit = {"零","壹","貳","叁","肆","伍","陆","柒","扒","玖"};String[] unit = {"整","圆","拾","百","仟","万","拾","百","仟","亿","拾","百","仟","万"};while(true){num = new Scanner(System.in).nextLong();char[] chArr = Long.toString(num).toCharArray();StringBuilder sb = new StringBuilder("");for(int i = 0;i < chArr.length;i++){String s = digit[Integer.parseInt(String.valueOf(chArr[i]))];String s2 = unit[chArr.length-i];sb.append(s).append(s2); }sb.append(unit[0]);String str = sb.toString();str = change(str);System.out.println(str);}}private static String change(String str) {String s = str.replaceAll("零[仟百拾]", "零");s = s.replaceAll("零+", "零").replaceAll("零亿", "亿").replaceAll("零万", "万");s = s.replaceAll("零圆", "圆").replace("亿万", "亿");return s;}
}
有bug版
import java.util.Scanner;public class Test2 {public static void main(String[] args) {// TODO Auto-generated method stublong num = 101000001010l;//一千零一十亿零一千零一十圆整num = 1010l;//一千零一十亿零一千零一十圆整while(true){System.out.println("输入数学数字:");num = new Scanner(System.in).nextLong();String[] unit = {"圆整","万","亿"};int count = -1;StringBuilder sb = new StringBuilder("");while(num>0){count++;String s = "";long n = num%10000;//取后四位if(n < 10)s = "000"+n;else if(n < 100 )s = "00"+n;else if(n < 1000)s = "0"+n; elses = s+n;num /= 10000;if(!s.equals("0000"))s = toNum(s)+unit[count];//返回的数字加单位 elses = toNum(s);sb.insert(0, s);
// System.out.println(sb);}String chineseNum = sb.toString();System.out.println(chineseNum);}}public static String toNum(String num){String[] digit = {"零","壹","貳","叁","肆","伍","陆","柒","扒","玖"};char[] ch = num.toCharArray();//字符串形式的四位数int count = 0;//记录字符串含0的个数int index = -1;while((index = num.indexOf("0",index+1))!= -1)count++;
// System.out.println("字符串含0个数count = "+count);String numStr = "";//返回的中文数字switch(count){case 4:numStr = "零";break;case 3:int temp = Integer.parseInt(num);if(temp<10)numStr = digit[ch[3]-'0'];else if(temp > 9 && temp < 101)numStr = digit[ch[2]-'0']+"拾";else if(temp > 99 && temp < 1000)numStr = digit[ch[1]-'0'] + "百";elsenumStr = digit[ch[0]-'0'] + "仟";break;case 2:if(num.matches("[0][0][1-9][1-9]")){numStr = numStr + digit[ch[2]-'0']+"拾"+digit[ch[3]-'0'];;}else if(num.matches("[1-9][0][0][1-9]")){numStr = numStr + digit[ch[0]-'0'] + "仟" +"零"+ digit[ch[3]-'0'];}else if(num.matches("[1-9][1-9][0][0]")){numStr = numStr + digit[ch[0]-'0'] + "仟" +digit[ch[1]-'0'] + "百";}else if(num.matches("[0][1-9][1-9][0]")){numStr = numStr + digit[ch[1]-'0'] + "百"+ digit[ch[2]-'0']+"拾";}else if(num.matches("[0][1-9][0][1-9]")){numStr = numStr + digit[ch[1]-'0'] + "百"+"零"+ digit[ch[3]-'0'];}else if(num.matches("[1-9][0][1-9][0]")){numStr = numStr + digit[ch[0]-'0'] + "仟"+"零"+ digit[ch[2]-'0']+"拾";}break;case 1:if(num.matches("[0][1-9][1-9][1-9]")){numStr = numStr + digit[ch[1]-'0'] + "百" + digit[ch[2]-'0']+"拾"+digit[ch[3]-'0'];}else if(num.matches("[1-9][0][1-9][1-9]")){numStr = numStr + digit[ch[0]-'0'] + "仟" +"零"+ digit[ch[2]-'0']+"拾"+digit[ch[3]-'0'];}else if(num.matches("[1-9][1-9][0][1-9]")){numStr = numStr + digit[ch[0]-'0'] + "仟" +digit[ch[1]-'0'] + "百" + "零"+digit[ch[3]-'0'];}else if(num.matches("[1-9][1-9][1-9][0]")){numStr = numStr + digit[ch[0]-'0'] + "仟" +digit[ch[1]-'0'] + "百" + digit[ch[2]-'0']+"拾";}break;default:numStr = numStr + digit[ch[0]-'0'] + "仟" +digit[ch[1]-'0'] + "百" + digit[ch[2]-'0']+"拾"+digit[ch[3]-'0'];}// System.out.println(numStr);return numStr;}
}
java练习:金额转换,阿拉伯数字转换成中文传统形式相关推荐
- 金额转换,阿拉伯数字转换成中国传统形式。 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
金额转换,阿拉伯数字转换成中国传统形式. 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整 package com.itheima;import java.util.Arr ...
- 金额转换,阿拉伯数字转换成中国传统形式。例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
public class Test{ // 定义三个字符数组,把中文的数字形式存储下来,再下面代码中获取下标,设置对应中文 private static char[] hunit = { '拾', ' ...
- js将阿拉伯数字翻译成中文的大写数字
// 将阿拉伯数字翻译成中文的大写数字 export const numberToChinese = (num) => { var AA = new Array("零" ...
- 把阿拉伯数字翻译成中文大写数字
package com.zcw.zcwbook.demo15;/*** @program: zcwbook* @description: 把阿拉伯数字翻译成中文大写数字* @author: zhaoc ...
- java实现将阿拉伯数字转成中文大写工具类
package com.sqds.utils;/*** <p>Title: money</p>* <p>Description: * *该类是把阿拉伯数字转换成中文 ...
- python里面如何将数字转换成中文的形式_python中将阿拉伯数字转换成中文的实现代码...
#!/usr/bin/python #-*- encoding: utf-8 -*- import types class NotIntegerError(Exception): pass class ...
- 怎么实现金额转换,将阿拉伯数字金额转换成中国传统形式,例如1011变成一千零一拾一元整?
public class Rmb{private static final char[] data = {'零','壹','贰','叄','肆','伍','陆','柒','捌','玖'};privat ...
- python里面如何将数字转换成中文的形式_Python怎么把数字变成中文?
python将数字转换为中文的方法: 在字典中设置0-9为键,值为数字对应的中文,转换数字时获取字典中指定键对应的值即可.dict1={'0': '零', '1': '一', '2': '二', '3 ...
- java输入数字输出汉语_java实现将一个键盘输入的阿拉伯数字转化成中文输出
(例如:输入:1234567 输出:一百二拾三万四千五百六拾七) 用java语言实现,,请编一段程序实现! public class Reader { private String strNu ...
最新文章
- Logical Volume Manager in Linux ( Create, Displ...
- java操作XML文件--读取内容
- 怀旧版大脚插件未能从服务器,魔兽世界怀旧服大脚插件
- 09 | 基础篇:怎么理解Linux软中断?
- Xcode 4.4 的新特性 | LLVM 4.0 的新语法
- oracle约束 关闭,Oracle约束管理脚本
- Quartus13.1全编译出现引脚错误(神级bug)
- Android打开相机进行人脸识别,使用虹软人脸识别引擎
- 存档位置_胶带输送机综合保护装置安装位置 技术标准(试行)
- Intel Multiprocessor System Architecture
- 搭建Mybatis源码环境
- regester正则用法_Regester(正则表达式测试器)
- 如何看待网络直播中的弹幕文化?
- 阻止野猪入境 丹麦在德国边境开始建设边境围栏
- 2020美容师(初级)模拟考试及美容师(初级)复审模拟考试
- 方法重写的两同两小一大原则
- 【CSDN软件工程师能力认证学习精选】 JavaEE 13个核心规范
- 电脑回收站里不小心清理删除的文件怎么恢复?
- 主力资金屡试不爽的六种洗盘手法
- 全国计算机考试能带手机吗,全国计算机等级考试注意事项