汉语数字转化为阿拉伯数字

  • 方式一:得到结果集然后进行遍历
    • 运行结果展示
  • 方式二:结果集一直变化中
    • 运行结果展示
  • 罗马数字转化为阿拉伯数字
    • 运行结果展示

方式一:得到结果集然后进行遍历

public static void main(String[] args) {List<String> kk = new ArrayList<String>();kk.add("一");kk.add("五");kk.add("一十三");kk.add("十");  kk.add("十三");kk.add("二百");kk.add("一百五");kk.add("一百五十");kk.add("一千五");kk.add("一千五百");kk.add("一万零五百");kk.add("一万五");kk.add("一万五千");//kk.add("一万零五十");kk.add("一万零五");kk.add("一千零五");kk.add("九千九百九十九");for (String str : kk) {String oo = initNumToInt(str);System.out.println(str+ ":"+oo);System.err.println(str+ ":"+dsd.chineseToInt(str));}   }public static String initNumToInt(String str) {char chinaNum[] = {'一','二','三','四','五','六','七','八','九','十'};int matheNum[] = {1,2,3,4,5,6,7,8,9,0};String chinaNumUnit[] = {"零","十","百","千","万"};int moveNum[] = {0,1,2,3,4};for(int i=0;i<chinaNumUnit.length;i++) {  //初始化strif(str.startsWith(chinaNumUnit[i])) {str = "一"+str;break;}else if(str.length()>2&&i>1 ){if(chinaNumUnit[i].equals(String.valueOf(str.charAt(str.length()-2)))) {str = str+chinaNumUnit[i-1];break;}}}List<Integer> list = new ArrayList<Integer>();char cha = '0';       int result = 0;for(int i=0;i<str.length();i++) {cha = str.charAt(i);//ok:for(int j=0;j<chinaNum.length;j++) {if(cha==chinaNum[j]) {int num = matheNum[j];if(list.size()==0) {list.add(num);  }else {list.set(0, num);}                                       }//移动if(list.size()!=0) {for(int k=0;k<chinaNumUnit.length;k++) {                if(cha==chinaNumUnit[k].charAt(0)) {int a = list.size();if(a<=moveNum[k]) {for(int size=0;size<moveNum[k];size++) {list.add(0);}}      list.set(moveNum[k], list.get(0));list.set(0, 0);break ok;}else {continue;}}}}  }for(int i=0;i<list.size();i++) {//遍历方式一int multiple=1;for(int k=1;k<=i;k++) {multiple = multiple * 10;}result += list.get(i)*multiple;}String newStr="";for(int i=0;i<list.size();i++) {//遍历方式二newStr +=list.get(list.size()-1-i);}return result+"";}
运行结果展示


以上方式暂时无法处理十万以上的数字

方式二:结果集一直变化中

public class Dsd {public static int chineseToInt(String str) {Map<Character,Integer> map = new HashMap<>();map.put('一', 1);map.put('二', 2);map.put('三', 3);map.put('四', 4);map.put('五', 5);map.put('六', 6);map.put('七', 7);map.put('八', 8);map.put('九', 9);map.put('十', 10);map.put('百', 100);map.put('千', 1000);map.put('万', 10000);str = str.replaceAll("零", "");int[] nums = new int[str.length()+1];int nm = 0;for(int i = 0;i<str.length();i++) {nums[i] = map.get(str.charAt(i));if(i!=0&&nums[i]>=10) {if(nums[i-1]<10){nm += nums[i]*nums[i-1]-nums[i-1];}else {nm *= nums[i];}}else {nm += nums[i];}}return nm;}
}
运行结果展示


以上方式暂时处理结果,克服了第一种方式的短板

方式二在结果上出现了一部分的误差,只需在调用方法之前调用初始化str的方法即可

罗马数字转化为阿拉伯数字

  public static void main(String[] args) {List<String> kk = new ArrayList<String>();kk.add("III");//3kk.add("IX");//9kk.add("XXIX");//29kk.add("XI");  //11kk.add("CMXCIX");//999kk.add("MDCCCXCIX");//1899kk.add("MDCLXVI");//1666kk.add("C");//100kk.add("LX");//60kk.add("XCVIII");//98for (String str : kk) {System.out.println(str+":"+romanToInt(str));}}public static int romanToInt(String s) {int nm = 0;int[] nums = new int[s.length()+1];char[] cs = s.toCharArray();for(int i = 1;i<=cs.length;i++) {switch (cs[cs.length-i]) {case 'I':nums[i] = 1;break;case 'V':nums[i] = 5;break;case 'X':nums[i] = 10;break;case 'L':nums[i] = 50;break;case 'C':nums[i] = 100;break;case 'D':nums[i] = 500;break;default:nums[i] = 1000;break;}if(nums[i]>=nums[i-1]) {nm += nums[i];}else {nm -= nums[i];}}return nm;}
运行结果展示


有出入的地方欢迎指正,有好的方案欢迎交流,代码中有很多不足的地方还望见谅

汉语数字或罗马数字转化为阿拉伯数字:例如:一百二十三为123、III为3相关推荐

  1. C语言力扣第十三题之罗马数字转化为阿拉伯数字。枚举swtich

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值     I             1     V             5     X       ...

  2. js 数字转为罗马数字(互转换),I 、II 、 III 、IV、V

    代码: //数字转为阿拉伯数字 export function intToRoman(num) {let map = {1: 'I',5: 'V',10: 'X',50: 'L',100: 'C',5 ...

  3. 如何将数字123转化成大写的文字 一百二十三 或 一二三?

    相信大家在前端开发过程中经常遇到需要显示章目的情况,例如: 在 Vue 中我们可以用 v-for 处理列表数据显示这样的列表,但是 我们只能通过 Index 获得 [0,1,2,3,4] ,显然我们需 ...

  4. python将中文数字转化成阿拉伯数字

    python将中文数字转化成阿拉伯数字 正则表达式提取文本中的数字 中文转化成阿拉伯数字 完整代码 正则表达式提取文本中的数字 这里演示一下文本中提取中文年份 import re m0 = " ...

  5. excel小写转大写公式_EXCEL中文小写数字怎么转化成阿拉伯数字呢?

    把阿拉伯数字转化成中文小写数字,我们都知道,通过单元格格式设置就可以实现,如下图: 但是上面的转化有时并不能满足我们的需求,比如,我们需要把13转化成十三,而不是一十三,这时我们该怎么办呢? 下面我们 ...

  6. 金额大小写转化、阿拉伯数字转大写数字,大写数字转阿拉伯数字

    题:请写个程序,将类似下面的大写金额转化为阿拉伯数字. 大写金额样例:玖仟伍佰零玖亿壹佰零玖万玖仟伍佰壹拾捌元整. 实现方式: 1.先来一个看起来比较高大上的有技巧的更适合装逼的一种方式:利用函数 s ...

  7. 如何将汉语数字转换成阿拉伯数字!

    其实这个题目本身都还有点问题.汉语数字的表达方式何止一两种,而且还有很多不规范的称呼.所以,转换起来也是比较麻烦的.并且由于每个人的叫法不同,因此也不容易判定用户的输入是否合符常理和规范.这就只能靠大 ...

  8. JS中将中文数字转化为阿拉伯数字

    数字转换为中文大写,我相信已经有很多的实现了,特别是一些银行金融系统中,经常会用到大写的人民币金额. 但是,反过来,怎么将这个中文描述的人民币金额转换为数字呢? 这里分享一个我很久之前写的一个转换函数 ...

  9. 孤立汉语数字语音识别系统

    摘要:本文通过提取声音信号的Mel倒谱系数作为特征,利用动态时间规整技术实现匹配算法,实现了特定人孤立汉语数字语音的识别,并利用Matlab编写了简单的图形用户界面. 关键词:语音识别:MFCC:DT ...

最新文章

  1. 如何在JavaScript中切片和拼接数组
  2. python怎么读excelsheet_python3 excle(python怎么读写excel文件)
  3. java自动雨刷系统,安装雨量传感器实现自动大灯/自动雨刷(详细方法)多图!!
  4. OpenYurt 开箱测评 | 一键让原生 K8s 集群具备边缘计算能力
  5. 男人女人小孩共32人c语言,C编程核心要点,你确信你会C语言?看完之后,男人沉默,女人流泪...
  6. 五子棋项目结束总结_五子棋编程思想小结
  7. 高通audio数据到Speaker播放流程
  8. 激光SLAM之Cartographer源码解析视频课程
  9. Linux中线程使用详解
  10. 【Hoxton.SR1版本】Spring Cloud Consul服务注册中心搭建
  11. 分治——线性时间选择算法
  12. WikiExtractor.py(维基百科抽取器)
  13. python中国大学慕课网_高级语言程序设计(Python)中国大学慕课搜题网站
  14. winvnc源码阅读笔记(四)---------vncDesktopThread线程
  15. 开关电源输出纹波主要来源五个方面?示波器测纹波方法?
  16. Ignition Gazebo Fortress LTS试用
  17. SAP R3 功能详解 - 固定资产会计
  18. Python 线程之退出线程
  19. c++日志工具spdLog
  20. 用js脚本写的仿Windows7的扫雷游戏(高仿真)

热门文章

  1. EXCEL设置自动隔行填充颜色
  2. 物理机安装linux系统失败,物理机(服务器)安装centos6.5 无法启动报Error loading operating--(示例代码)...
  3. Linux 系统安全检查
  4. 【产品开发】北邮国际学院大二下期末复习
  5. XTU OJ 1359 字符频度
  6. 【网易2017春招】赶去公司 解题报告
  7. ICN: Integrated crosstalk noise
  8. 在线gif图片压缩,如何压缩gif动图大小
  9. 浅谈Thumbnails压缩gif图片质量的实现方式
  10. 锂电池电量百分比计算_手机电池容量的百分比显示跟电池的电量“格子”的比例计算...