今天在超市,忽然想到可以写一段代码实现当收银员输入阿拉伯数字的人民币时,能够以规范的大写形式将其自动打印到发票上。

注:转换规范如下示例:
(1) 100000010100.09
人民币壹仟亿零壹万零壹佰元零角玖分
(2) 123456789.00
人民币壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元整
(3) 1000000000.09
人民币拾亿元零角玖分
以下是我使用java实现该功能的代码:

import java.util.Scanner;public class RMBSwitch {public static void main(String[] args){System.out.println("please input a double number");Scanner scanner=new Scanner(System.in);//最多允许输入:左边12位,右边必须两位String RMBArabic=scanner.next();        String RMBCN="人民币";String[] totalInput=RMBArabic.split("\\.");System.out.println("The result is");System.out.println(RMBCN+leftToCN(totalInput[0])+rightToCN(totalInput[1]));scanner.close();}//转换左边整数部分public static String leftToCN(String left){String leftCN="";String[] ZHCN={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};        String[] unitCN={"","拾","佰","仟"};if (left.length()<=4) {for (int i = 0; i < left.length(); i++) {leftCN=leftCN+ZHCN[Integer.valueOf(left.charAt(i))-48]+unitCN[left.length()-i-1];}leftCN=leftCN+"元";}if (left.length()<=8&&left.length()>4) {for (int i = 0; i < left.length()-4; i++) {leftCN=leftCN+ZHCN[Integer.valueOf(left.charAt(i))-48]+unitCN[left.length()-i-5];}leftCN=leftCN+"万";for (int i = left.length()-4; i < left.length(); i++) {leftCN=leftCN+ZHCN[Integer.valueOf(left.charAt(i))-48]+unitCN[left.length()-i-1];}leftCN=leftCN+"元";}if (left.length()<=13&&left.length()>8) {for (int i = 0; i < left.length()-8; i++) {leftCN=leftCN+ZHCN[Integer.valueOf(left.charAt(i))-48]+unitCN[left.length()-i-9];}leftCN=leftCN+"亿";for (int i = left.length()-8; i < left.length()-4; i++) {leftCN=leftCN+ZHCN[Integer.valueOf(left.charAt(i))-48]+unitCN[left.length()-i-5];}leftCN=leftCN+"万";for (int i = left.length()-4; i < left.length(); i++) {leftCN=leftCN+ZHCN[Integer.valueOf(left.charAt(i))-48]+unitCN[left.length()-i-1];}leftCN=leftCN+"元";}if (leftCN.charAt(0)=='壹'&&leftCN.charAt(1)=='拾') {leftCN=leftCN.substring(1);}       while(scanString(leftCN)==1){for (int i = 0; i < leftCN.length()-1; i++) {if (leftCN.charAt(i)=='零'&&(leftCN.charAt(i+1)=='亿'||leftCN.charAt(i+1)=='万')) {leftCN=leftCN.substring(0, i)+leftCN.substring(i+1);}if (leftCN.charAt(i)=='零'&&(leftCN.charAt(i+1)=='拾'||leftCN.charAt(i+1)=='佰'||leftCN.charAt(i+1)=='仟'||leftCN.charAt(i+1)=='元'||leftCN.charAt(i+1)=='零')) {leftCN=leftCN.substring(0, i+1)+leftCN.substring(i+2);}}}if (leftCN.charAt(leftCN.length()-1)=='零') {leftCN=leftCN.substring(0,leftCN.length()-1)+"元";}if (leftCN.charAt(leftCN.indexOf('万')-1)=='亿') {leftCN=leftCN.substring(0,leftCN.indexOf('万'))+leftCN.substring(leftCN.indexOf('万')+1);}return leftCN;}public static int scanString(String stringIn){int flag=0;for (int i = 0; i < stringIn.length()-1; i++) {if (stringIn.charAt(i)=='零'&&(stringIn.charAt(i+1)=='万'||stringIn.charAt(i+1)=='亿')) {flag=1;break;}if (stringIn.charAt(i)=='零'&&(stringIn.charAt(i+1)=='拾'||stringIn.charAt(i+1)=='佰'||stringIn.charAt(i+1)=='仟'||stringIn.charAt(i+1)=='元'||stringIn.charAt(i+1)=='零')) {flag=1;break;}}return flag;}//转换右边小数部分public static String rightToCN(String right){String[] ZHCN={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};String rightCN="";if (right.charAt(0)=='0'&&right.charAt(1)=='0') {rightCN=rightCN+"整";}else {rightCN=rightCN+ZHCN[Integer.valueOf(right.charAt(0))-48]+"角"+ZHCN[Integer.valueOf(right.charAt(1))-48]+"分";}return rightCN;}}

我的实现思路为:先将其全部读出来,不考虑多个零或者单个零的情况,然后再处理读出来的字符串中的零,如果谁有更好的方法可以在评论区留言,谢谢!

标记为原创的博文均为本人辛苦码字所得,谢绝抄袭,转载请注明出处,新浪微博私信艾特:物联网工程_Niegang。

人民币小写转换为大写相关推荐

  1. 人民币小写转换为大写函数

    人民币小写转换为大写 <script language=javascript> mymoney=window.prompt("请输入金额:"); </script ...

  2. java把小写变大写_用java实现人民币小写变大写的方法

    用java语言可以实现人民币小写转换为大写吗?如何实现呢?下面常见的用java实现人民币小写变大写的方法可以说是最精简的了,希望大家可以学习下. 这里介绍一个通过取余的办法来实现将人民币小写转换为大写 ...

  3. golang实现人民币小写转大写

    2019独角兽企业重金招聘Python工程师标准>>> 使用golang的正则表达式实现人民币小写转大写,代码如下: package mainimport ("regexp ...

  4. C语言实现人民币小写转大写

    这个是很早之前用C语言实现的人民币小写转大写的方法 /************************************************************************* ...

  5. c语言人民币小写转换成大写,C语言实现人民币小写转大写

    这个是很早之前用C语言实现的人民币小写转大写的方法 /************************************************************************* ...

  6. 人民币小写转大写的一般方法

    人民币小写转大写的一般方法.还可以 const char* RMB(double rmb) {     if(rmb<0) return NULL;     static char *CCC[1 ...

  7. 英文转中文和人民币小写转大写

    public static string PinYin(string mystr)   { //指转换一个中文    string tt;    if ((mystr.ToUpper().Compar ...

  8. c语言如何小写转换为大写字母,c语言怎么将小写转换为大写

    c语言怎么将小写转换为大写? 在 C 语言中区分字母的大小写,利用 ASCII 码中大写字母和小写字母之间的转换关系(差值为 32),可以将小写字母转换为大写字母.编写程序实现,从键盘上输入一个小写字 ...

  9. php人民币小写转大写函数

    发现csdn所用的代码高亮插件也有同样的bug,当代码中含有empty函数时,总是会输出两个.本想在这里发下代码的,一看发出来是错的,还是作罢,以免误导同学.留个链接吧:php人民币小写转大写函数

最新文章

  1. python 原始字符串r的用法
  2. 分析了这么多年的福利彩票记录,原来可以用Python这么买彩票!
  3. pygame碰撞检测
  4. 数据结构(四)选择排序
  5. 使用规则_英文标点符号的使用规则
  6. 双向链表list.h升序排序
  7. 【论文研读】【医学图像分割】【FCN+RNN】Recurrent Neural Networks for Aortic Image Sequence Segmentation with ...
  8. springamqp_SpringAMQP
  9. 只用几行代码,我让模型『训练』加速了3倍以上!
  10. Java FileReader读文件
  11. module not specified如何解决
  12. 二项式定理学习笔记(详解)
  13. Android 使用 Scheme 启动淘宝,天猫等其他APP
  14. laravel excel 导出
  15. BUUCTF-PWN刷题记录-17
  16. Android下的配置管理之道之主从gerrit配置使用replication插件
  17. 套接字、UDP通信、TCP通信、TCP\IP协议簇
  18. centos7 磁盘分区
  19. 【Vue3+Express实战-3】实现新增课程接口
  20. 用分区助手扩容C盘后开机蓝屏

热门文章

  1. php update when,iphone will restart when update什么意思
  2. The superclass javax.servlet.http.HttpServlet was not found on the Java Buid Path
  3. 国外长高书籍内有详细锻炼方法
  4. JQ中的“对象不支持此方法或属性”
  5. python--敲击木鱼积累功德小项目(更新版(2))
  6. 没有群晖却要共享文件?试试HFS搭建精简版NAS吧
  7. 理解不变因子、行列式因子、初等因子
  8. 转自科学网:《评论:“副教授,我缺少的是什么?”》
  9. usb转com口驱动
  10. ALLEGRO的约束规则的设置教程,手把手教你!