在处理财务账款时,需要将转账金额写成大写的。也就是说,如果要转账123456.00元,则需要写成“壹拾贰万叁仟肆佰伍拾陆元整”。
所以常常需要通过程序控制自动进行转换。本实例实现了小写金额到大写金额的转换。

具体代码如下:

  1. import java.text.DecimalFormat;
  2. import java.util.*;
  3. //@北冥道人骑鲲打代码
  4. public class f2 {
  5. private static String[] numBig = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
  6. private static String[] numInt = { "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟" };// 整数单位
  7. private static String[] numFloat = { "厘", "分", "角" };// 小数单位
  8.  
  9. public static void main(String[] args) {
  10. Scanner input = new Scanner(System.in);
  11. System.out.println("请输入金额");
  12. double money = input.nextDouble();
  13.  
  14. //格式化double数字
  15. DecimalFormat df = new DecimalFormat("#0.###");//此时strNum小数位最多3位
  16. String strNum = df.format(money);
  17. if (strNum.indexOf(".") > 0 ) {//判断是否有小数
  18. String strMoneyInt = strNum.substring(0, strNum.indexOf("."));
  19. if(strMoneyInt.length() > 12){
  20. System.out.println("数字太大了,转换不了");
  21. }else{
  22. System.out.println(getInt(strNum) + "元" + getDouble(strNum));
  23. }
  24. }
  25. else{
  26. if(strNum.length() > 12){
  27. System.out.println("数字太大了,转换不了");
  28. }else{
  29. System.out.println(getInt(strNum) + "元整");
  30. }
  31. }
  32. }
  33.  
  34. //整数部分
  35. public static String getInt(String str) {
  36. if(str.indexOf(".") != -1){
  37. str = str.substring(0,str.indexOf("."));//截取小数点前面的数字
  38. }
  39. str = new StringBuffer(str).reverse().toString();//反转字符串
  40. StringBuffer strB = new StringBuffer(); //创建一个空的StringBuffer对象
  41. for (int i = 0; i < str.length(); i++){ //把单位添加进去
  42. strB.append(numInt[i]);
  43. strB.append(numBig[(str.charAt(i)-48)]);
  44. //str.charAt(i)-48,这里-48是因为str.charAt(i)-48为ASCII码
  45. //而参照ASCII码:
  46. //ASCII码为 48 ==》0
  47. //ASCII码为 49 ==》1 ...
  48. }
  49. str = strB.reverse().toString();//把反转过的字符串还原
  50.  
  51. //替换字符串多于的字符
  52. if (str.indexOf("零拾") != -1){str = str.replace( "零拾", "零");}
  53. if (str.indexOf("零佰") != -1){str = str.replace( "零拾", "零");}
  54. if (str.indexOf("零仟") != -1){str = str.replace( "零拾", "零");}
  55. if (str.indexOf("零万") != -1){str = str.replace( "零拾", "万");}
  56. if (str.indexOf("零亿") != -1){str = str.replace( "零拾", "亿");}
  57. if (str.indexOf("零零") != -1){str = str.replace( "零拾", "零");}
  58. if (str.indexOf("亿万") != -1){str = str.replace( "零拾", "亿");}
  59.  
  60. //除去零的结尾
  61. if (str.lastIndexOf("零") == str.length() - 1) {
  62. str = str.substring(0, str.length() - 1);
  63. }
  64. return str;
  65. }
  66.  
  67. //小数部分
  68. public static String getDouble(String str) {
  69. str = str.substring(str.indexOf(".") + 1);//截取小数点后的数字
  70.  
  71. //解决单位错位
  72. if(str.length() == 1){str = str +"00";}
  73. else if(str.length() == 2){str = str +"0";}
  74.  
  75. str = new StringBuffer(str).reverse().toString();//反转字符串
  76. StringBuffer strB = new StringBuffer();//创建一个空的StringBuffer对象
  77. for (int i = 0; i < str.length(); i++) {//把单位添加进去
  78. strB.append(numFloat[i]);
  79. strB.append(numBig[str.charAt(i) - 48]);
  80. }
  81. str = strB.reverse().toString();//把反转过的字符串还原
  82.  
  83. //替换字符串多于的字符
  84. if (str.indexOf("零角") != -1){str = str.replace( "零角", "零");}
  85. if (str.indexOf("零分") != -1){str = str.replace( "零分", "零");}
  86. if (str.indexOf("零厘") != -1){str = str.replace( "零厘", "零");}
  87. if (str.indexOf("零零") != -1){str = str.replace( "零零", "零");}
  88.  
  89. //除去零的结尾
  90. if (str.lastIndexOf("零") == str.length() - 1) {
  91. str = str.substring(0, str.length() - 1);
  92. }
  93. return str;
  94. }
  95. }

运行截图:

java程序:转化金额的更多相关文章

  1. Java初学者作业——编写Java程序, 实现根据用户购买商品总金额, 计算实际支付的金额及所获得的购物券金额。

    返回本章节 返回作业目录 需求说明: 编写Java程序, 实现根据用户购买商品总金额, 计算实际支付的金额及所获得的购物券金额. 购买总金额达到或超过 1000元,按 8折优惠,送 200元的购物券: ...

  2. 编写高质量代码:改善Java程序的151个建议(第二章:基本类型)

    编写高质量代码:改善Java程序的151个建议(第二章:基本类型) 目录 建议21:用偶判断,不用奇判断 建议22:用整数类型处理货币 建议23:不要让类型默默转换 建议24:边界还是边界 建议25: ...

  3. 2017年 Java 程序员,风光背后的危机

    不得不承认,经历过行业的飞速发展期,互联网的整体发展趋于平稳.为什么这么说?为什么要放在 Java 程序员的盘点下说? 的确,对于进可攻前端,后可守后端大本营的 Java 程序员而言,虽然供应逐年上涨 ...

  4. 编写高质量代码:改善Java程序的建议

    建议的采用顺序是List<T>.List<?>.List<Object> List<T>.List<?>.List<Object> ...

  5. Java程序员学习之路

    1. Java语言基础 谈到Java语 言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基 ...

  6. Java中基本数据类型的存储方式和相关内存的处理方式(java程序员必读经典)

    1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...

  7. Java程序版权保护解决方案

    通常C.C++等编程语言开发的程序都被编译成目标代码,这些目标代码都是本机器的二进制可执行代码.通常所有的源文件被编译.链接成一个可执行文件.在这些可执行文件中,编译器删除了程序中的变量名称.方法名称 ...

  8. 利用IKVM在C#中调Java程序

    原文转自:http://luanxiyuan.iteye.com/blog/1937081 IKVM.NET是一个针对Mono和微软.net框架的java实现,其设计目的是在.NET平台上运行java ...

  9. Java程序员面试题集(71-85)(转)

    转:http://blog.csdn.net/jackfrued/article/details/17566627 Java程序员面试题集(71-85) 摘要:这一部分主要包括了UML(统一建模语言) ...

  10. java程序的工作原理

    Sun公司设计java语言的目标是让Java程序不必经过修改就可以在各种各样的计算机(包括PC机和工作站)上运行.为了实现这一目标,Sun公司提供了一阵Java虚拟机(Java Virtual Mac ...

随机推荐

  1. 把.net Core 项目迁移到VS2019 for MAC

    VS2019 for MAC已经发布很长时间了,本以为项目移过去很麻烦,一直没有动作,最近呆家里快发霉了,决定研究研究,没想到一句代码都不需要动,直接完功,这下可以生产了.同学们可以放心整了. 本次平 ...

  2. vijos 1011 清帝之惑之顺治

    背景 顺治帝福临,是清朝入关后的第一位皇帝.他是皇太极的第九子,生于崇德三年(1638)崇德八年八月二ten+six日在沈阳即位,改元顺治,在位18年.卒于顺治十八年(1661),终24岁. 顺治即位 ...

  3. 微信小程序接入百度OCR(身份证识别)

    微信小程序接入百度OCR(身份证识别) 1.接口描述 支持对二代居民身份证正反面所有8个字段进行结构化识别,包括姓名.性别.民族.出生日期.住址.身份证号.签发机关.有效期限,识别准确率超过99%:同 ...

  4. call 和 apply 和 bind的区别

    有些东西说忘就往,每天记录自己忘记的东西重新学习一遍,挺好 作用:call()和apply()用法都是一样的,改变this的指向问题 区别:接收参数的方式不同, (bind 方法是附加在函数调用后面使 ...

  5. openwrt 为软件包添加服务

    手动修改 rc.local 加入也可以实现自启动,缺点手动修改太麻烦,停止只能用 kill . 配置成服务最方便了,可以启用或禁用,启动,停止,重启非常方便. 在openwrt 中使用服务 servi ...

  6. 单片机基础——使用GPIO扫描检测按键

    1. 准备工作 硬件准备 开发板首先需要准备一个小熊派IoT开发板,并通过USB线与电脑连接. 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码,可参考MDK安装教程 ...

  7. Design Patterns | 02 什么样的代码是好代码

    目录 01 - 什么是好的代码? 02 - 评价代码的标准有哪些 2.1 可维护性(maintainability) 2.2 可读性(readability) 2.3 可扩展性(extensibili ...

  8. 为Python安装pip

    Python及操作系统的支持 Python 2.6, 2.7, 3.2, 3.3, 3.4 Unix/Linux, OS X, 以及 Windows   默认包含 Python 2.7.9 及以后的版 ...

  9. OFD电子证照模版制作工具 --(采用wpf开发)

    前言  ofd应用的范围非常广,电子证照是其中非常重要的一个应用.同一类电子证照具有相同的板式.元数据:所以电子证照非常适合用模版来制作.模版就是板式样式固定,每个具体的证照只是文字或图片内容不同.比 ...

  10. 手写redux方法以及数组reduce方法

    reduce能做什么? 1)求和 2)计算价格 3)合并数据 4)redux的compose方法 这篇文章主要内容是什么? 1)介绍reduce的主要作用 2)手写实现reduce方法 0)了解red ...