- 浏览: 367128 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
xujishen:
新入职 写道还是没很明白~~这个BigDecimal.ROUN ...
BigDecimal带精度的运算 -
542348257:
数字为long型的时候 好像处理有点问题
【无聊的笔记】将数字转换为中文读法 -
陈小妞:
当你输入100003980的时候在万位会多一个万字
【无聊的笔记】将数字转换为中文读法 -
stranger520:
可能有问题吧,举个例子: pacage1/User.class ...
java读取指定package下的所有class -
springdata_springmvc:
java程序语言学习教程 地址http://www.zuida ...
java学习——mina篇
将阿拉伯数字的数变成我们常用的中文读法,
比如说: 1234,读作1千2百3十4,反正就跟中文读的一样就对了。
分析过程其实是这个题目最重要的,但是我实在不想写那么多文字了。
这里纯粹为了记录代码,以后再补上分析过程和思路。
代码记录:
import java.util.Arrays; import java.util.HashMap; import java.util.Map; /** * @author goliang * @version 创建时间:2011-6-5 下午01:29:32 类说明 */ public class Num2String { /** * 处理0,1,2.。9的中文读法的 */ private static Map<Integer, String> numberStringMap = new HashMap<Integer, String>(); /** * 10进制的读法 */ private static Map<Integer, String> base10StringMap = new HashMap<Integer, String>(); static { numberStringMap.put(0, "零"); numberStringMap.put(1, "壹"); numberStringMap.put(2, "贰"); numberStringMap.put(3, "叁"); numberStringMap.put(4, "肆"); numberStringMap.put(5, "伍"); numberStringMap.put(6, "陆"); numberStringMap.put(7, "柒"); numberStringMap.put(8, "捌"); numberStringMap.put(9, "玖"); base10StringMap.put(1, ""); base10StringMap.put(2, "十"); base10StringMap.put(3, "百"); base10StringMap.put(4, "千"); base10StringMap.put(5, "万"); } /** * @param args */ public static void main(String[] args) { int a[] = { 2000042, 1298302000, 1003, 1030, 1000, 20000000 }; for (int i = 0; i < a.length; i++) { readChinese(a[i]); } } private static void readChinese(int a) { String intString = a + ""; char ichar[] = intString.toCharArray(); char icharrevert[] = revertCharArray(ichar); int i = 0; String result = ""; while (i < icharrevert.length) { char[] icharsplit = Arrays.copyOfRange(icharrevert, i, i + 4 < icharrevert.length ? i + 4 : icharrevert.length); result = processSplitedNumber(icharsplit, (i + 1) / 4) + result; i = i + 4; } System.out.println("原数字为:"+a+"切换后的读法为:"+result); } private static char[] revertCharArray(char[] ichar) { char icharNew[] = new char[ichar.length]; /** * 将得到的数组倒排,这样做原因是因为读的时候从前往后读, 位数前面的高 */ for (int i = ichar.length - 1, j = 0; i >= 0 && j < ichar.length; i--, j++) { icharNew[j] = ichar[i]; } return icharNew; } private static String processSplitedNumber(char[] num, int time) { StringBuffer sb = new StringBuffer(); for (int i = num.length - 1; i >= 0; i--) { // sb.append(num[i]); if (num[i] == '0') { /** * 当前数字是0.并且是最后一位,直接不读 */ if (i == 0) { continue; } /** * 当前数字是0,下一个数字不是0,补一个0上去读 */ if (num[i - 1] != '0') { sb.append(numberStringMap.get(Integer.valueOf(num[i] + ""))); } else { continue; } } else { /** * 如果当前位数不是0,那就正常的读出数字和位 */ sb.append(numberStringMap.get(Integer.valueOf(num[i] + ""))); sb.append(base10StringMap.get(i + 1)); } } if (time == 0) { } else if (time == 1) { sb.append("万"); } else if (time == 2) { sb.append("亿"); } return sb.toString(); } }
最后的输出结果:
原数字为:2000042切换后的读法为:贰百万零肆十贰 原数字为:1298302000切换后的读法为:壹十贰亿玖千捌百叁十万贰千 原数字为:1003切换后的读法为:壹千零叁 原数字为:1030切换后的读法为:壹千零叁十 原数字为:1000切换后的读法为:壹千 原数字为:20000000切换后的读法为:贰千万
发表评论
-
2013年技术愿望目标
2013-01-07 23:25 0一: 读源码 1:jetty 2:webx,spr ... -
jetty的http协议解析
2012-07-31 23:59 0上篇文章讲到:jetty的connection解析到hand ... -
jetty源码阅读之connection解析到handler调用
2012-07-29 21:58 0前言: 想要处理用户发出的http请求,首先得获得连接 ... -
jetty源码阅读之connector
2012-07-29 14:56 0AbstractConnector @Overr ... -
定时执行Timer的源码阅读
2012-02-22 18:51 1658Timer的实现原理: 1:timer简介; ... -
jetty翻译
2011-09-06 23:50 0异步等待 异 ... -
【转】mysql Host is blocked error错误解决方案
2011-08-01 14:40 2833Host is blocked because of ma ... -
java按值传递
2011-06-28 23:13 0来看看代码 packag ... -
用mina网络传输使用ObjectSerializationCodecFactory一个小注意点
2011-04-05 18:18 8655背景: 之前的 一篇介绍mina的博客中,提到通过mi ... -
jboss下的war包的context映射配置
2011-02-10 17:19 0一般web容器都可以在 deploy 目录下放多个war包, ... -
maven war plugin 的filter 配置。
2011-02-10 17:14 0具体可以参考,maven的官方配置。 http://m ... -
【why系列】内部类为什么访问外围内需要用final
2011-01-10 13:16 011111111111111 -
java命令行知多少(反正我知道的比较少)
2010-12-29 17:11 3806打开 %java_home%\bin 下面,看一堆的命令 ... -
【why系列】为什么序列化要实现一个空接口Serializable
2010-12-25 22:16 0啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 -
【why系列】为什么说java是不可变的对象
2010-12-25 22:15 0啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 package ... -
java线程总结
2010-12-23 15:25 01:java启动一个线程,会为每一个线程,分配一个 ... -
【监控】通过jmx获得系统的gc,内存情况
2010-11-27 21:52 6164通过jmx访问jvm知道的Mbean的一些信息,可以取得系统运 ... -
自动动手写原生态jmx,MbeanInfo,invoke
2010-11-16 22:07 1964使用jmx的东东主要包括下面几个步骤了: 发布j ... -
用spring连接jmx
2010-11-14 18:20 1775接着上一篇 “原生态连接jmx”的例子。 上一篇中,发 ... -
采用hudson跟踪代码质量:单元测试和findbug报表
2010-10-31 22:17 0hu
相关推荐
Java设计输入“12345”显示“一万两千三百四十五” 输入“1000”显示“一千”
数字金额转汉字读法,简单方便易懂,个性化的读法还需自己写判断去区分
例如"123456"转换为"壹拾贰萬叁仟肆佰伍拾陆
阿拉伯数字转换成中文传统读法
将浮点数转化为人民币读法的字符串。如1006.333转为壹仟零陆元三角三分。
阿拉伯数字金额转换成汉字金额,比如1000.00 转换成 壹仟元。
将小写数字变大写 如 输入1234567 可以输出一二三四五六七
疯狂java讲义里的课后题,自己编写的程序
不同的时间下日语数字的读法总结,word版,不用再翻书找了,其实很简单,一目了然了。
把中文数字的读法通过程序转为英文读法的方法。
英语数字读法PPT课件.pptx
可以将任意长度的数字转换为汉语口语的读法、 对于支持语音模块的单片机可以直接实现口语报数 例如: 12345 一万两千三百四十五 10001 一万零一 9020012 九百零二万零一十二
包括拼音,简繁转换,数字读法,货币读法。 安装 通过Nuget使用.NET CLI安装: dotnet add package Chinese 版本更新 v0.3.5 : 可移除对Microsoft Visual Studio International Pack 1.0 Service的依赖; 拼音解析...
题目:输入一串数字,转成人民币读法输出 例: 输入:12345678.908 输出:壹仟贰佰叁拾肆万伍仟陆佰柒拾捌元玖角零捌厘 实现该功能要解决如下几个问题: 1、输入有效性检查 2、数字转中文 3、零的特殊处理 关于零...
本文实例讲述了C#基于纯数学方法递归实现货币数字转换中文功能。分享给大家供大家参考,具体如下: 最近由于项目的原因,需要写一个货币数字转换中文的算法,先在网了找了一下,结果发现无一列外都是用(Replace)替换...
课后习题 欢迎下载 还是比较完善的
日语汉字的标音,即汉字的读法标注,获得汉字音标
日语数字的读法[归类].pdf
把表示数字的金额数(元、分)转为英文读法 把965.59转换为英文字母表示 输出: NINE HUNDRED AND SIXTY-FIVE POINT FIVE NINE
关于英语数字的读法.doc