java实现在控制台输入亿以内的数字转换成汉语读法
2013-04-26 16:33
495 查看
本功能实现的是你输入数字:123 返回对应汉语读法:一百二十三
输入:100 返回:一百
输入:101返回:一百零一
还是实现了对应的是否是数字判断和为空判断。最重要是实现重复尝试该功能。
哈哈自夸一下,其实 自己总结一下自己。欢迎大家评论和大家提供意见。好让我知道我那里不足。
好了不多说了大家来看看代码吧
下面是输出结果
输入:100 返回:一百
输入:101返回:一百零一
还是实现了对应的是否是数字判断和为空判断。最重要是实现重复尝试该功能。
哈哈自夸一下,其实 自己总结一下自己。欢迎大家评论和大家提供意见。好让我知道我那里不足。
好了不多说了大家来看看代码吧
package com.test.oop; import java.util.Scanner; public class TestNumToChina { /** * 实现数字与汉字之间的转换. * @param num 拆分的数字. * @param pos 数字所在字符里面的位置(由字符左边开始数的位置). * @param length 输入数字的长度. * @return 返回对应数字的汉字. */ public String getChina(char num,Integer pos,Integer length){ String str = ""; switch (num) { case '0': str = "零"; break; case '1': if(length-pos != 6 && length-pos != 2){ str = "一"+""+getWY(length-pos); } break; case '2': str = "二"+""+getWY(length-pos); break; case '3': str = "三"+""+getWY(length-pos); break; case '4': str = "四"+""+getWY(length-pos); break; case '5': str = "五"+""+getWY(length-pos); break; case '6': str = "六"+""+getWY(length-pos); break; case '7': str = "七"+""+getWY(length-pos); break; case '8': str = "八"+""+getWY(length-pos); break; case '9': str = "九"+""+getWY(length-pos); break; } return str; } /** * 返回万或亿(汉语读法). * @param pos 字符所在的位置 (由字符右边开始数的位置). * @return */ public String getWY(Integer pos){ String str = ""; if(pos == 5){ str = "万"; } if(pos == 9){ str = "亿"; } return str; } /** * 返回十百千(汉语读法). * @param pos 字符所在的位置 (由字符左边开始数的位置). * @param length 字符长度. * @return */ public String getPos(Integer pos,Integer length){ String str = ""; switch (length-pos) { case 1: break; case 2: str = "十"; break; case 3: str = "百"; break; case 4: str = "千"; break; case 6: str = "十"; break; case 7: str = "百"; break; case 8: str = "千"; break; } return str; } /** * 获取总读法. * @param nums 数字字符分解的数组. * @param length 字符长度. * @param text 输入的字符. * @return */ public String getAllChina(char [] nums,Integer length,String text ){ String china = ""; for (int i = 0; i < nums.length; i++) { //把第一个字符和最后一个字符不加入0的判断. if(i <nums.length-1){ char a = text.charAt(i+1); char b = text.charAt(i); //如果当前字符不等于0 且下一个字符等于0时 获取当前字符的汉语读法 if(a == '0' && b != '0'){ china += getChina(nums[i], i,length)+""+getPos(i, length); } //如果当前字符等于0且下一个字符不等于0就直接返回零 if (a != '0' && b == '0'){ china += getChina(nums[i], i,length); } //如果都不等0就直接返回当前汉语读法 if(a != '0' && b != '0'){ china += getChina(nums[i], i,length)+""+getPos(i, length); } if(a == '0' && b == '0'){ //如果输入的数字达到亿,且前面没有千百十都不存在 则 万不要加上 if(length == 9){ if(china.indexOf("千") > 0 || china.indexOf("百") > 0 || china.indexOf("十") > 0){ china += getWY(length - i); } }else{ china += getWY(length - i); } } }else if(text.charAt(i) != '0'){ china += getChina(nums[i], i,length)+""+getPos(i, length); } } return china; } /** * 判断字符是否是数字. * @param str 输入的字符. * @return */ public static boolean isNum(String str){ return str.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$"); } /** * 判断是否重新尝试. * @param sc 输入字符流. * @return */ public boolean isRetry(Scanner sc){ boolean status = false; String y = sc.nextLine(); if(y.equals("y")){ System.out.print("哈哈!欢迎再次尝试."); status = true; } if(!y.equals("y") && !y.equals("n")){ System.out.print("输入非法,是不是重新尝试? y/n :"); status = isRetry(sc); } if(y.equals("n")){ System.out.println("欢迎下次再来,bye!"); } return status; } public static void main(String[] args) { while(true){ Scanner sc = new Scanner(System.in); TestNumToChina tc = new TestNumToChina(); System.out.print("请输入数字:"); String text = sc.nextLine(); if(null == text || "".equals(text)){ System.out.println("输入非法,没有任何输入!"); continue; } if(!isNum(text)){ System.out.println("输入非法,输入的不是数字!"); continue; } if(isNum(text)){ String china = tc.getAllChina(text.toCharArray(),text.length(),text); System.out.println("汉语读法为:"+china); System.out.print("是不是重新尝试? y/n :"); if(tc.isRetry(sc)){ continue; } break; } } } }
下面是输出结果
相关文章推荐
- @V@ java代码笔记2010-06-12:java控制台输入各类型类实现;以及判断输入字符串里面是否有数字的两种方法:方法1:转换成字符数组;方法2:正则表达式。
- Java实现读数字的问题,输入长整型数字,输出汉语里面的读法
- 用Java 编一段代码,实现在控制台输入一组数字后,排序后在控制台输出
- JAVA实现 输入一串数字,转换成汉字显示
- JAVA实现 输入一串数字,转换成汉字显示
- Java学习笔记 实现阿拉伯数字(一亿以内)转换为中文繁体数字
- Java实现控制台登录(控制台输入的数据与数据库中的数据匹配) 注册
- Java中实现数字金额到中文大写字符的转换!! 选择自 netfalcon 的 Blog
- 如何把数字字符'1'转换为整数(java 实现)
- JAVA基础 day21 字节流的输入和输出 字节流的缓冲区 (自己实现BufferedInputStream) 键盘输入 转换流的用法 改变标准输入输出设备 IO流操作的基本规律
- JAVA实现数字大写金额转换的方法
- .Net/C#/VB/T-SQL/Java/Script 实现: 将天文数字转换成中文大写 (2000 年前的思路,打劫的,一点儿技术含量都没有)
- Java实现浮点数转换成人民币读法字符串
- java 实现将String字符串大写中文数字转换成int类型整数
- java实现获取输入字符串内最长数字子串
- java实现数字金额转换成汉字大写金额
- java实现将汉语转换为拼音
- java实现 阿拉伯数字转换为汉字数字 算法
- JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
- 转 .Net/C#/VB/T-SQL/Java/Script 实现: 将天文数字转换成中文大写 (2000 年前的思路,打劫的,一点儿技术含量都没有)