输入数字,输出数字读法
来源:互联网 发布:软件测试难不难 编辑:程序博客网 时间:2024/05/01 02:20
思路分析
实践代码
import java.util.Arrays;import java.util.HashMap;import java.util.Map;public class Num2String { //数字对应关系 private static Map<Integer, String> numberStringMap = new HashMap<Integer, String>(); //位数对应关系 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, "万"); } /** * 主函数,程序从这里开始执行 */ public static void main(String[] args) { //初始化 int数组,设定有一下6个数字; 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) { //将数字由int 转化为 String 类型 String intString = a + ""; //将String类型 转化为 字符数组char[] char ichar[] = intString.toCharArray(); //将字符数组 顺序颠倒 --> 比如:ichar = ['1','2','3'] ,执行revertCharArray(ichar)方法后,变为['3','2','1'] //为什么要这样做呢? --> 为了方便数字从低位开始读起; char icharrevert[] = revertCharArray(ichar); int i = 0; String result = ""; //从颠倒后的数组icharrevert中读取字符,每次读取4位,如果数组长度不足4位,则读取到数组最大长度即可; /** * 举例说明: 如输入的数字是 200 0042; * 顺序颠倒后,得到的字符数组icharrevert[] = ['2','4','0','0','0','0','2'] * 第一次读取4个字符,2,4,0,0 * 逆序读起,即0,0,4,2; 字符串读法为 零肆拾贰 * 第二次读取3个字符; * 逆序读起,即2,0,0;字符串读法为贰佰,第二次读起所以,后面加一个万;最后输入读法为贰佰万; * * 最后输出结果为; 贰佰万零肆拾贰 */ while (i < icharrevert.length) { //一次读取字符数组中的4个字符 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; } /** * 字符转换为字符串读法 * @param num 字符数组 * @param time 次数 * @return */ 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) { /** * 每4位读一次,第二次读取完毕,后面加"万" */ sb.append("万"); } else if (time == 2) { /** * 每4位读一次,第三次读取完毕,后面加"亿" */ sb.append("亿"); } return sb.toString(); }}
0 0
- 输入数字,输出数字读法
- Java实现读数字的问题,输入长整型数字,输出汉语里面的读法
- 输入数字把数字变成中文的读法
- 英语数字的读法
- 英语中的数字读法
- 数字自然读法
- java中读入数字转成中文读法输出
- 输入一串数字输出最大的数字
- c++ 输入字符串,输出数字
- 任意输入数字,输出中位数
- 输入数字,输出中文大写
- 输入数字星期,输出英文
- 输入十个数字,逆序输出
- C++字符串输入数字输出
- C 输入数字,输出汉字
- 数字的人民币中文读法
- 【算法】数字读法转汉字
- 请教输入任意一组数字,然后将这组数字输出
- iOS AssetsLibrary和Photos的使用总结(2): 原图获取
- Trick(五)——交换两个数(swap)
- C++Primer第5版读书笔记(第6章)
- nginx使用ssl模块配置HTTPS支持
- 按键事件笔记
- 输入数字,输出数字读法
- 88. Merge Sorted Array
- Android基于Facebook Rebound的动画效果框架Backboard demo (非常炫酷)
- LINUX右键菜单当前路径打开终端
- Redis学习小结
- 用两个栈实现队列和用两个队列实现一个栈
- Linux下,串口,FIFO循环队列,状态机接收程序
- myeclipse 2015 stable 2.0连接mysql URL错误
- hive本地安装