用Java语言将一个键盘输入的数字转化成中文输出


Posted in 面试题 onJanuary 25, 2013
将一个键盘输入的数字转化成中文输出
(例如:输入:1234567 输出:一百二拾三万四千五百六拾七)
用java语言实现,,请编一段程序实现!
1. public class Reader {
2. private String strNum;
3.
4. private String strNumChFormat;
5.
6. private String strNumTemp;
7.
8. private int intNumLen;
9.
10. private String strBegin;
11.
12. public Reader(String strNum) {
13. this.strNum = strNum;
14. }
15.
16. public boolean check(String strNum) {
17. boolean valid = false;
18. if (strNum.substring(0, 1).equals(“0″)) {
19. this.strNum = strNum.substring(1);
20. }
21. try {
22. new Double(strNum);
23. valid = true;
24. } catch (NumberFormatException ex) {
25. System.out.println(“Bad number format!”);
26. }
27. return valid;
28. }
29.
30. public void init() {
31. strNumChFormat = “”;
32. intNumLen = strNum.length();
33. strNumTemp = strNum;
34. strNumTemp = strNumTemp.replace(’1′, ‘一’);
35. strNumTemp = strNumTemp.replace(’2′, ‘二’);
36. strNumTemp = strNumTemp.replace(’3′, ‘三’);
37. strNumTemp = strNumTemp.replace(’4′, ‘四’);
38. strNumTemp = strNumTemp.replace(’5′, ‘五’);
39. strNumTemp = strNumTemp.replace(’6′, ‘六’);
40. strNumTemp = strNumTemp.replace(’7′, ‘七’);
41. strNumTemp = strNumTemp.replace(’8′, ‘八’);
42. strNumTemp = strNumTemp.replace(’9′, ‘九’);
43. strNumTemp = strNumTemp.replace(’0′, ‘零’);
44. strNumTemp = strNumTemp.replace(‘.’, ‘点’);
45. strBegin = strNumTemp.substring(0, 1);
46. }
47.
48. public String readNum() {
49. if (check(strNum)) {
50. init();
51. try {
52. for (int i = 1, j = 1, k = 1; i 53. if (strNumTemp.charAt(intNumLen – 1) == ‘零’ && i == 1) {
54. strNumChFormat = “位”;
55. } else if (strNumTemp.charAt(intNumLen – i) == ‘零’ && j == 1) {
56. strNumChFormat = “位” + strNumChFormat;
57. } else if (strNumTemp.charAt(intNumLen – i) == ‘点’) {
58. j = 1;
59. k = 1;
60. strNumChFormat = strNumTemp.charAt(intNumLen – i) + strNumChFormat;
61. continue;
62. } else {
63. strNumChFormat = strNumTemp.charAt(intNumLen – i) + strNumChFormat;
64. }
65. if (strNumTemp.charAt(intNumLen – i – 1) != ‘位’ && strNumTemp.charAt(intNumLen – i – 1) != ‘零’) {
66. if (j == 1 && i 67. strNumChFormat = ‘拾’ + strNumChFormat;
68. } else if (j == 2 && i 69. strNumChFormat = ‘百’ + strNumChFormat;
70. } else if (j == 3 && i 71. strNumChFormat = ‘千’ + strNumChFormat;
72. }
73. }
74. if (j == 4 && i 75. j = 0;
76. }
77. if (k == 4 && i 78. strNumChFormat = ‘万’ + strNumChFormat;
79. } else if (k == 8 && i 80. k = 0;
81. strNumChFormat = ‘亿’ + strNumChFormat;
82. }
83. j++;
84. k++;
85. }
86. while (strNumChFormat.indexOf(“位”) != -1) {
87. strNumChFormat = strNumChFormat.replaceAll(“位”, ” “);
88. }
89. if (strNumChFormat.substring(0, 2) == “一拾”) {
90. strNumChFormat = strNumChFormat.substring(1, strNumChFormat.length());
91. }
92. if (strNumChFormat.indexOf(“点”) >= 0) {
93. String rebegin = strNumChFormat.substring(0, strNumChFormat.indexOf(“点”));
94. String relast = strNumChFormat.substring(strNumChFormat.indexOf(“点”), strNumChFormat.length());
95. for (int i = 1; i 96. relast = relast.replaceAll(“拾”, “”);
97. relast = relast.replaceAll(“百”, “”);
98. relast = relast.replaceAll(“千”, “”);
99. relast = relast.replaceAll(“万”, “”);
100. relast = relast.replaceAll(“亿”, “”);
101. }
102. strNumChFormat = rebegin + relast;
103. }
104. } catch (ArrayIndexOutOfBoundsException ex) {
105. ex.printStackTrace();
106. } catch (Exception ex) {
107. ex.printStackTrace();
108. }
109. int off = strNumChFormat.indexOf(“点”);
110. strNumChFormat = strBegin + strNumChFormat.substring(0);
111. } else {
112. strNumChFormat = “”;
113. }
114. return strNumChFormat;
115. }
116.
117. public static void main(String args[]) {
118. try {
119. String number = args[0].toString();
120. System.out.println(“The number is: ” + number);
121. Reader reader = new Reader(number);
122. System.out.println(“Output String: ” + reader.readNum());
123. } catch (Exception ex) {
124. System.out.println(“Please input like that: javac Reader ”);
125. }
126. }
127. }

Tags in this post...

面试题 相关文章推荐
为什么使用接口?
Aug 13 面试题
北京银河万佳Java面试题
Mar 21 面试题
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
Jun 11 面试题
DBA的职责都有哪些
May 16 面试题
C#可否对内存进行直接的操作
Feb 26 面试题
介绍一下write命令
Sep 24 面试题
EJB需直接实现它的业务接口或Home接口吗,请简述理由
Nov 23 面试题
EJB发布WEB服务一般步骤
Oct 31 面试题
介绍一下Mysql的存储引擎
Feb 12 面试题
与C++相比,Java中的数组有什么不同
Mar 25 面试题
为什么说Ruby是一种真正的面向对象程序设计语言
Oct 30 面试题
Java面试题冲刺第十七天--基础篇3
Aug 07 面试题
如何写出高质量、高性能的MySQL查询
Nov 17 #面试题
几个MySql的面试题
Apr 22 #面试题
简单叙述一下MYSQL的优化
May 09 #面试题
MySQL面试题目集锦
Apr 14 #面试题
如何提高MySql的安全性
Jun 19 #面试题
介绍一下Mysql的存储引擎
Feb 12 #面试题
介绍一下如何优化MySql
Dec 20 #面试题
You might like
Laravel框架数据库CURD操作、连贯操作总结
2014/09/03 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
jquery ajax例子返回值详解
2012/09/11 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
基于jQuery实现收缩展开功能
2016/03/18 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
vue.js+element-ui动态配置菜单的实例
2018/09/07 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
python获取从命令行输入数字的方法
2015/04/29 Python
利用Python如何生成随机密码
2016/04/20 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
python3.8.1+selenium实现登录滑块验证功能
2020/05/22 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
全球知名旅游社区巴西站点:TripAdvisor巴西
2016/07/21 全球购物
《再别康桥》教学反思
2014/02/12 职场文书
授权委托书范本
2014/04/03 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
房屋转让协议书
2014/10/18 职场文书
小学校长个人总结
2015/03/03 职场文书
个人思想政治总结
2015/03/05 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书
关爱空巢老人感想
2015/08/11 职场文书
如何利用python创作字符画
2022/06/25 Python