题目描述

把一串数字装换成英文表达或者中文表达。
例如:1234转换成一千二百三十四和one southand two hundred thirty four

思路分析

此题就是纯coding问题,不过,需要注意一个特殊技巧,那就是,类似于职责链模式一样的代码编写格式,我们先写个位,个位的结果就那几个,需要枚举出来,然后,处理十位上的数,此时,我们可以把十位单独提出来处理后,剩下的调用处理个位的函数。同理,处理百位时,也是如此,我们并不需要从头到尾重复处理,因为十位个位已经有相关函数处理了,此时,只需要处理百位后,再调用十位的函数,十位又会调用个位,类似于职责链模式的代码。
需要注意的是,英语中,三位是一体的,Thousand、Million、Billion。而中文中,4位是一体的,依次是万和亿,拼接上基础的个十百千来搞定。

转英文代码

    public static String toEnglish(int num){String str="";if(num<0){str+="negative ";num=-num;}if(num==0){return "zero";}if(num<1000){return e0to999(num);}while (num>1000){if(num>1000000000){str+=toEnglish(num/1000000000)+" Billion ";num=num%1000000000;}if(num>1000000){str+=toEnglish(num/1000000)+" Million ";num=num%1000000;}if(num>1000){str+=toEnglish(num/1000)+" Thousand ";num=num%1000;}}str+=e0to999(num);return str;}public static String e0to19(int num){String[] str=new String[]{"one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","nineteen"};return str[num-1]+" ";}public static String e0to99(int num){if(num<20){return e0to19(num);}String[] str={"twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety"};return str[num/10-2]+" "+e0to19(num%10);}public static String e0to999(int num){if(num<100){return e0to99(num);}return e0to19(num/100)+" hundred "+e0to99(num%100);}

转中文代码

    public static String toChinese(int num){String str="";if(num<0){str+="负";num=-num;}if(num==0){return "零";}if(num<10000){return c0to9999(num);}while (num>10000){if(num>100000000){str+=toChinese(num/100000000)+"亿";num=num%100000000;}if(num>10000){str+=toChinese(num/10000)+"万";num=num%10000;}}str+=c0to9999(num);return str;}public static String c0to9(int num){String[] str={"一","二","三","四","五","六","七","八","九"};return str[num-1];}public static String c0to99(int num){if(num<9){return c0to9(num);}String[] str={"十","二十","三十","四十","五十","六十","七十","八十","九十"};return str[num/10-1]+c0to9(num%10);}public static String c0to999(int num){if(num<99){return c0to99(num);}String[] str={"一百","二百","三百","四百","五百","六百","七百","八百","九百"};if(num%100<10){return str[num/100-1]+"零"+c0to9(num%100);}else {return str[num/100-1]+c0to99(num%100);}}public static String c0to9999(int num){if(num<999){return c0to999(num);}String[] str={"一千","二千","三千","四千","五千","六千","七千","八千","九千"};if(num%1000<100){return str[num/1000-1]+"零"+c0to99(num%1000);}else {return str[num/1000-1]+c0to999(num%1000);}}

阿拉伯数字转换成英文以及中文表达相关推荐

  1. c# 阿拉伯数字转换成英文

    最近做了一个外贸程序,里面需要把阿拉伯数字的货币转换成英文,所以写了一下代码,当大家遇到同样的问题的时候 ,可供大家参考 //===================================== ...

  2. Matlab从日文转换成英文或中文转换成英文

    日文转换成英文: 方法1:Control Panel(控制面板) -> Region and Language (区域和语言)-> Formats(格式), Format: English ...

  3. 中文字号转换成英文的字号

    中文字号转换成英文的字号 中文字号 英文字号(pt) 初号  |  42 ---------------- 小初  |  36 ---------------- 1号   |  26 -------- ...

  4. 怎么简单快速的将多个中文文件转换成英文的名称

    相信大家在日常办公中,经常会需要接触大量的文件,有很多工作的特殊性,就需要将中文转换成英文在进行使用,那今天就给大家分享一个能够批量翻译.自定义修改名称的方法. 当然在处理的过程中我们是需要借助一些软 ...

  5. js将阿拉伯数字转换成中文的大写数字

    js将阿拉伯数字转换成中文的大写数字 export const numberToChinese = (num) => {var AA = new Array("零", &qu ...

  6. python练习题--阿拉伯数字转换成中文数字

    python练习题–阿拉伯数字转换成中文数字 用户输入任意阿拉伯数字,如[123456],把它转换成中文数字[壹拾贰万叁仟肆佰伍拾陆] 以前面试时面试官问的问题,当时没能答出来,今天初步解决,把它记录 ...

  7. 【工具封装】Python 实现将阿拉伯数字 === 转换成中文大写数字

    一.序言:   工具封装第四弹,阿拉伯数字 ===> 转换成 ===> 中文大写数字,喜欢就赶紧收藏+点赞+关注吧 !!! ---- Nick.Peng 二.实现代码如下: #!/usr/ ...

  8. 将一组阿拉伯数字转换成中文大写数字

    题目大概:  将一组阿拉伯数字转换成中文大写数字  52306 ==> 伍万贰千叁百零陆 我实现了将文件中的一组数字(每行为一个数)  形如: Java代码   25364 466932300 ...

  9. javascript 将中文符号转换成英文符号

    javascript 将中文符号转换成英文符号 CreateTime--2018年3月30日09:01:29 Author:Marydon /*** 将中文符号转换成英文符号*/ function c ...

最新文章

  1. java生成函数excel_java实现在excel中创建及读取公式
  2. 安卓设置菊花动画_Android Progressbar自定义菊花效果
  3. PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型
  4. 剑桥大学在机器人,半导体,5G,区块链方面的研究实验室
  5. Elasticsearch结构化搜索_filter执行原理深度剖析(bitset机制与caching机制)
  6. 算法笔记(胡凡)刷题笔记目录
  7. “数据打通”不等于“数据共融”,智能数据营销解决方案了解一下
  8. while循环语法结构
  9. 一个屌丝程序员的青春(五一)
  10. [经典之作]vml经典之作
  11. 使用pyautogui实现坐标定位,自动化
  12. SMTP邮箱服务器发送邮件
  13. 《二》STM32时钟使能及应用总结
  14. 一篇运维老司机的大数据平台监控宝典(1)-联通大数据集群平台监控体系进程详解
  15. 123456G随想~
  16. 在python中元素是无序不重复的_set()函数~~创建一个无序不重复元素集
  17. 微信小程序之自定义组件(微信小程序完结)
  18. acrobat 打印PDF时错误:Error: typecheck; OffendingCommand: show
  19. 2019性价比旗舰手机哪家强?联想Z6 Pro当仁不让
  20. 项目规划怎么做?如何轻松做好项目规划?

热门文章

  1. 19岁少年重塑CPU,降低80%计算机功耗
  2. LeetCode 289 Game of Life(生命游戏)(Array)
  3. 联想x250为什么这么贵_为什么thinkpad 这么贵
  4. SysFader:iexplorer.exe应用程序错误
  5. MSTSC密码方式登录
  6. 传智播客韩顺平老师PHP入门到精通视频免费下载
  7. EOF、EOT 简单介绍
  8. 告诉老默我想学Spring Cloud了(新手篇):从0到1搭建Spring Cloud项目(实际项目开发的浓缩精华版)
  9. Qt信号与槽会被阻塞的问题
  10. printwriter 输出html换行,Java PrintWriter.println()写入数据