Java实现人民币大小写转换
思路和具体方法都在注释中说明
package ClassicArithmetic;import java.util.Scanner;/** @author:LOHAS翀* @time:2019/11/1* * 人民币大小写转换(阿拉伯数字转汉字)* 要求:* 1)输入小写数字金额,输出大写汉字金额* 2)最大单位支持到亿,最小单位主持到分(即阿拉伯数字支持小数点后两位),超出范围输出错误提示* 3)对输入进行校验,不能出现运行错误* 4)符合人民币金额格式,如:亿/万/元等前不可出现零等* */
public class UnitTranslate {//定义数字对应的汉字public final static String[] num = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};//定义单位public final static String[] unit = {"", "拾", "佰", "仟"};public static void main(String[] args) {while (true) {try {System.out.println("请输入数字:");Scanner sc = new Scanner(System.in);String input = sc.next();//对数字进行整数和小数的分隔String[] numString = input.split("\\.");//若是整数则将其转换为有小数的数if (numString.length == 1) {input += ".0";numString = input.split("\\.");}//将整数进行分隔String[] zhengshu = numString[0].split("");//将数字前的0去掉while (zhengshu[0].equals("0") && zhengshu.length > 1) {String[] tmp = new String[zhengshu.length - 1];for (int i = 0; i < zhengshu.length - 1; i++) {tmp[i] = zhengshu[i + 1];}zhengshu = tmp;}//对小数进行分隔String[] xiaoshu = numString[1].split("");//若格式不对则抛出异常if (xiaoshu.length > 2 || numString.length != 2 || zhengshu.lenth > 12) {throw new Exception();} else if (xiaoshu.length == 1 && xiaoshu[0].equals("0")) {//小数部分为0的情况printInfo(zhengshu, xiaoshu);} else if (xiaoshu.length == 1 && !xiaoshu[0].equals("0")) {printInfo(zhengshu, xiaoshu);System.out.print(num[Integer.parseInt(xiaoshu[0])] + "角");} else if (xiaoshu.length == 2) {printInfo(zhengshu, xiaoshu);System.out.print(num[Integer.parseInt(xiaoshu[0])] + "角");System.out.print(num[Integer.parseInt(xiaoshu[1])] + "分");}break;} catch (NumberFormatException e) {System.out.println("输入有误");} catch (Exception e) {System.out.println("输入有误");}}}public static void printInfo(String[] zhengshu, String[] xiaoshu) {int tmp = 0; //该标志位用来记录对unit的操作地址int zeroNum = 0; //记录从右到左第5到第8位0的个数//数字为亿级if (zhengshu.length > 8) {for (int i = 0; i < zhengshu.length - 8; i++) {int nums = Integer.parseInt(zhengshu[i]);//判断相邻是否为0if (zhengshu[i].equals("0") && zhengshu[i + 1].equals("0") && i + 1 < zhengshu.length - 8) {continue;}//若0在级的最后一位则不输出if (i == zhengshu.length-8-1 &&zhengshu[zhengshu.length-8-1].equals("0")){break;}//若有相邻的0则输出最后一个0if (zhengshu[i].equals("0")) {System.out.print(num[nums]);} else {System.out.print(num[nums] + unit[zhengshu.length - 8 - 1 - i]);}}System.out.print("亿");for (int i = zhengshu.length - 8; i < zhengshu.length - 4; i++) {int nums = Integer.parseInt(zhengshu[i]);if (zhengshu[i].equals("0") && zhengshu[i + 1].equals("0") && i + 1 < zhengshu.length - 4) {tmp++;zeroNum++;continue;}if (i == zhengshu.length - 5 && zhengshu[zhengshu.length - 5].equals("0")) {break;}if (zhengshu[i].equals("0")) {System.out.print(num[nums]);tmp++;} else {System.out.print(num[nums] + unit[3 - tmp]);tmp++;}}if (zeroNum != 3) {System.out.print("万");}tmp = 0;for (int i = zhengshu.length - 4; i < zhengshu.length; i++) {int nums = Integer.parseInt(zhengshu[i]);if (i + 1 < zhengshu.length && zhengshu[i].equals("0") && zhengshu[i + 1].equals("0")) {tmp++;continue;}if (i == zhengshu.length - 1 && zhengshu[zhengshu.length - 1].equals("0")) {break;}if (zhengshu[i].equals("0")) {System.out.print(num[nums]);tmp++;} else {System.out.print(num[nums] + unit[3 - tmp]);tmp++;}}System.out.print("元");tmp = 0;} else if (zhengshu.length > 4) { //数字为万级for (int i = 0; i < zhengshu.length - 4; i++) {int nums = Integer.parseInt(zhengshu[i]);if (zhengshu[i].equals("0") && zhengshu[i + 1].equals("0") && i + 1 < zhengshu.length - 4) {continue;}if (i == zhengshu.length - 4 -1 && zhengshu[zhengshu.length-4-1].equals("0")){break;}if (zhengshu[i].equals("0")) {System.out.print(num[nums]);} else {System.out.print(num[nums] + unit[zhengshu.length - 4 - 1 - i]);}}System.out.print("万");for (int i = zhengshu.length - 4; i < zhengshu.length; i++) {int nums = Integer.parseInt(zhengshu[i]);if (i + 1 < zhengshu.length && zhengshu[i].equals("0") && zhengshu[i + 1].equals("0")) {tmp++;continue;}if (i == zhengshu.length - 1 && zhengshu[zhengshu.length - 1].equals("0")) {break;}if (zhengshu[i].equals("0")) {System.out.print(num[nums]);tmp++;} else {System.out.print(num[nums] + unit[3 - tmp]);tmp++;}}System.out.print("元");tmp = 0;} else if (zhengshu.length <= 4) {for (int i = 0; i < zhengshu.length; i++) {int nums = Integer.parseInt(zhengshu[i]);if ( i + 1 < zhengshu.length && zhengshu[i].equals("0") && zhengshu[i + 1].equals("0")) {continue;}if (i == zhengshu.length-1 && zhengshu[zhengshu.length-1].equals("0")){break;}if (zhengshu[i].equals("0")) {System.out.print(num[nums]);} else {System.out.print(num[nums] + unit[zhengshu.length - 1 - i]);}}System.out.print("元");}}
}
Java实现人民币大小写转换相关推荐
- Oracle存储过程实现人民币大小写转换
注意:当报如下错误时,是因为存储过程中定义的变量值太小,加大它的范围即可. Caused by: java.sql.SQLException: ORA-06502: PL/SQL: 数字或值错误 : ...
- JavaScript实现人民币大小写转换
当使用支票或者签署合同时,需要用到大写人民币,常用的中文大写包括零.壹.贰.叁.肆.伍.陆.柒.捌.玖.拾.佰.仟.万.亿.本文介绍下如何使用JavaScript实现将阿拉伯数字的人民币转换成大写. ...
- 人民币大小写转换格式
<?php //****人民币大小写转换格式**** function ChangeToRMB($Val) { $str=array(); $str[0]="零"; $str ...
- 超强技巧分享,如何将人民币大小写转换?
当我们在制作财务表格的时候,需要将金额的大写跟小写进行转换,如果要一个一个手打出来的话,那就太浪费时间了,一两个数额还好,如果一整个表格的数额,那就不得了了,那要花费多少时间才能将小写金额转换成大写金 ...
- JAVAScript实现人民币大小写转换算法
大家好,我是梦辛工作室的灵,最近在写一个人民币大小写转换的工具,就把数字转换为大写中文 界面如下: 这样就很清楚了,做财务软件的时候应该会经常用到: 转换代码如下(是从右向左读): function ...
- java实现人民币数字转换中文大写的工具实例代码demo分享
原文:java实现人民币数字转换中文大写的工具实例代码demo分享 http://www.zuidaima.com/share/1816208858221568.htm 刚好在项目里面用到了数字转化为 ...
- c语言人民币大小写转换,人民币大小写转换函数.xls
人民币大小写转换函数.xls Sheet3 Sheet1 IF(A1=0,"",IF(ABS(A1)<0.995,"",TEXT(INT(ROUND(AB ...
- java人民币大小写转换_人民币大小写转换
usingSystem;usingSystem.Text;usingSystem.Text.R using System; using System.Text; using System.Text.R ...
- java人民币大小写转换_Java 实现人民币小写转大写[转载http://sunjun.blogchina.com/]
Java实现人民币小写转大写 import java.io.*; import java.util.*; import java.lang.*; public class money { public ...
最新文章
- python re match groups_python re.match与re.search的区别
- .net 基于Jenkins的自动构建系统开发
- MySQ软件的卸载-通过控制面板方式
- 生产环境遇到难题,你是如何解决的?
- 在C#中判断某个类是否实现了某个接口
- Selenium应用代码(常见封装的方法二)
- 看不出svp补帧_SVP4免费版|SVP4(视频补帧软件)下载v4.2.0.122免费版 附教程 - 欧普软件下载...
- C语言100ms周期运行时间不够,DEH-系统调研报告.docx
- 物联网大数据商业模式画布-0406-v1.1王玉娟
- Java模拟新浪微博登陆抓取数据
- notes系统服务器地址,在Notes客户端和Domino服务器上,服务器地址的缓存(Cache)存放在哪里...
- 数学家们是怎么玩趣味拼图游戏的?
- 【无标题】二进制STL文件解析 计算面积和体积与根据高度计算部分体积
- Genymotion模拟器的安装和使用
- 【转】中国人唯一不认可的成功——就是家庭的和睦,人生的平淡
- Android集成GMS服务及GMS认证方案
- .find()的用法
- 新手入门:圆角使用方法详解,圆角形成原理以及各个值的意义
- Adobe Photoshop CC 2019 for Mac(版本介绍)
- 防止表单重复提交的解决方案
热门文章
- 基于kubeadm 部署K8S1.22.3 踩坑
- 数据结构c语言程序杨辉三角,杨辉三角 --- C语言程序
- 计算机B级基金有哪些类型,分级b基金是什么
- html怎么写分享代码,怎么写一个文件分享网页?百度一键分享按钮HTML代码
- [Un-Routed Net Constraint Violation] 问题解决
- 社交类app 乱弹琴
- sql镶嵌查询_SQL 嵌套查询
- 【具体实现过程】百度地图POI区域的边界经纬度坐标数据采集
- 小小的纳豆居然有这么多好处,难怪岛国人为它疯狂
- 有一种蓝,是神往,是心醉,是心伤