前两天看了,一个技术牛人的访谈,讲的非常的精彩。我只记得当中他说,程序员要怎么学习。提了很重要的一点,就是要经常性的写博客,把自己学到的知识,分享出来,这样不仅可以提高自己的能力,还能够让别人看你程序的时候,找出你的错误。我感觉这个方法特别的好,所以从今天,开始我也要把握所学的只是分享出来。希望广大看到我写博客的人,看到我的错误,欢迎批评指正。

好了,废话不多说,开始今天的分享,今天分享一个人民币大小写转换的,问题。这个是一个非常经典的问题。看上去非常的简单,但是要把所有的情况都考虑到。因为我学到不怎么好,现在能想到的点就是那么多。可能有的地方用的方法不是特别的优化。但是基本的功能是可以实现的。中间有一个地方,我在程序中也思考过,不知道怎么改正,输入的金额是double类型的,输入太长 的话,系统会自动以科学计数法的方法表示,以科学计数法表示的金额,还没有实现怎么转换为大写的形式。有知道的朋友,可以给我提醒一下。谢谢。

今天的代码重点的地方我都加了注释,还有不懂的地方,可以私聊我。

package suanfa;

import java.util.Scanner;

public class Numberconvert {
public static void main(String[] args) {
boolean flag = true;
Scanner sc = new Scanner(System.in);
ConvertChinese convertChinese = new ConvertChinese();
while (flag) {
System.out.println("输入你要转换的金额:");
double number = sc.nextDouble();
if (number > 0) {
System.out.println(convertChinese.getChinese(number) + "整");
} else {
flag = false;
}
}
System.out.println("结束,要想测试,请重新运行");
}

}

class ConvertChinese {
private String chinese = "";
private String decimalsChinese = "";
private String intNumber = "";
private String decimals = "";
String chineseUnit = "元=十=百=千=万=十=百=千=亿=十=百=千=万";
String chineseValue = "零壹贰叁肆伍陆柒捌玖";

public String getChinese(double number) {
// 判断所传过来的值,是整数还是小数
String srcNumber = number + "";// 把长整型转换为String 型
System.out.println("源数据:" + srcNumber);

intNumber = srcNumber.substring(0, srcNumber.indexOf("."));
decimals = srcNumber.substring(srcNumber.indexOf(".") + 1, srcNumber.length());

System.out.println("整数部分:" + intNumber);
System.out.println("小数部分:" + decimals);

String chineseUnit1[] = chineseUnit.split("=");
// 转换整数部分
for (int i = 0; i < intNumber.length(); i++) {
chinese += chineseValue.charAt(Integer.parseInt(srcNumber.charAt(i) + ""))
+ chineseUnit1[intNumber.length() - 1 - i];
}

boolean isZero=Integer.parseInt(decimals.substring(0,1))==0;
//这个地方的判断主要是因为,零钱有小数部分,小数部分的默认值是0.0,默认的有小数部分。所以需要判断
//小数部分那个小数是否为0,如果为0,就需要转换小数部分了。
// 计算小数部分
if (!(decimals.length() == 1 &&  isZero)) {
decimalsChinese += chineseValue.charAt(Integer.parseInt(decimals.substring(0, 1))) + "角"
+ chineseValue.charAt(Integer.parseInt(decimals.substring(1, 2))) + "分";
}
chinese += decimalsChinese;

while (chinese.indexOf("零零") != -1 || chinese.indexOf("零万") != -1 || chinese.indexOf("零亿") != -1
|| chinese.indexOf("亿万") != -1 || chinese.indexOf("零百") != -1 || chinese.indexOf("零元") != -1
|| chinese.indexOf("零十") != -1 || chinese.indexOf("零千") != -1 || chinese.indexOf("零角") != -1) {
chinese = chinese.replaceAll("零零", "零");
chinese = chinese.replaceAll("零十", "零");
chinese = chinese.replaceAll("零万", "万");
chinese = chinese.replaceAll("零亿", "亿");
chinese = chinese.replaceAll("零元", "元");
chinese = chinese.replaceAll("亿万", "亿零");
chinese = chinese.replaceAll("零百", "零");
chinese = chinese.replaceAll("零千", "零");
chinese = chinese.replaceAll("零角", "零");
chinese = chinese.replaceAll("零([十百千])", "零");
}

return chinese;

}
}

java版,实现人民币的大小写转换相关推荐

  1. Java版:字母的大小写转换

    package nihao; import java.util.Scanner; public class BaoZhuangLei { public static void main(String[ ...

  2. java 字母大写_Java字母大小写转换的方法

    案例: 要求从控制台接收用户输入的一个字母,如果这个字母是小写,转换为大写:如果这个字母是大写,转换为小写:只能输入字母,如果是其他值,提示数据有误! 实现代码: import java.util.S ...

  3. java的字母_Java字母大小写转换的方法

    案例: 要求从控制台接收用户输入的一个字母,如果这个字母是小写,转换为大写:如果这个字母是大写,转换为小写:只能输入字母,如果是其他值,提示数据有误! 实现代码: import java.util.S ...

  4. C#人民币金额大小写转换

    C#人民币金额大小写转换 在财务相关的软件的时候,常常设计到大小写金额的转换,小编整理了自己常用的数字金额大小写转换的方法代码 给大家参考如下: /// <summary> /// 金额小 ...

  5. Java简单编程题:大小写转换、兔子生兔子问题、狼追兔子问题、判断英文句子。

    Java简单编程题 1.大小写转换 2.兔子生兔子问题 3.狼追兔子问题 4.判断英文句子 1.大小写转换 输入一串字母 1.将大写转换为小写,小写转换为大写 2.将其全转换为小写 3.将其全转换为大 ...

  6. 人民币金额大小写转换函数

    [转帖]人民币金额大小写转换函数 Function NtoC( n0 :Extended) :wideString; //人民币金额大小写转换函数(如发现更为精简的,请告诉我) //作者:方小庆(上海 ...

  7. 首字母大写转换 java,Java InitialsTransformation(字符串首字母大小写转换)

    版权声明:本文为原创博文,最终解释权归一个集 帅气 与 智慧 和 手速 于一身的男人-灭世奶神-所有!- - - - - - - - - - - - -转载:请附上--源作者 / 源博文--相关链接信 ...

  8. 人民币数字大小写转换

    人民币数字大写转换 include <iostream> include <iostream> include <string> include <stdli ...

  9. 在线人民币金额大小写转换,助力会计工作

    这款工具可以将人民币金额的小写阿拉伯数字转换成对应的大写汉字. 支持的大写汉字包括零.壹.贰.叁.肆.伍.陆.柒.捌.玖.拾.佰.仟.万.亿等.使用非常简便,只需在输入框中输入需要转换的金额,然后点击 ...

最新文章

  1. datagridview滚动条自动滚动_Win32编程基础之滚动条
  2. Java SSH 集成框架开发中的错误解决
  3. mysql数据每日更新_[每日更新-MySQL]4.记录操作(数据操作)
  4. mysql分片库分页查询_mysql数据库分页查询优化
  5. python将非0数视为false_python 面试题
  6. 数据可视化设计的UI实用模板素材
  7. POJPower Network (最大流)
  8. 机器学习第二回——矩阵部分总结
  9. 云计算基础技术及解决方案介绍
  10. html制作菱锥旋转,几何画板制作正三棱锥的旋转动画
  11. c语言小球消砖块增加一行砖块,基于Unity的小球撞击砖块小游戏
  12. win10中常用快捷键 (包括切换窗口、打开我的电脑等快捷键)
  13. 候选键的计算(数据库系统概论)
  14. MMORPG的常规技能系统
  15. echarts实现各省市地图、中国地图
  16. 软件工程 系统测试概述
  17. ethos从入门到精通-7AMD显卡超频
  18. yarn安装与配置【Windows】
  19. 李永乐复习全书高等数学 第七章 无穷级数
  20. 3D射击游戏作弊视频课程-卢嘉文-专题视频课程

热门文章

  1. Notepad++下载安装介绍教程
  2. (原创)android6.0系统 PowerManager深入分析
  3. 谷歌浏览器设置默认搜索引擎
  4. 微信小程序使用iconfont阿里矢量多色图标
  5. python dataframe删除重复行_2.3.10 DataFrame 查看删除重复项
  6. node+vue微信小程序的社区后勤报修系统
  7. [转]Unity 打包快手
  8. 贪心相关:柠檬水找零、买卖股票的最佳时机、分发饼干、跳跃游戏 ...
  9. HTTPS证书转换成PEM格式
  10. Files and Directories