递归转化中文数字为阿拉伯数字

您所在的位置:网站首页 渐变国旗微信头像怎么搞的好看 递归转化中文数字为阿拉伯数字

递归转化中文数字为阿拉伯数字

2024-07-16 12:26:45| 来源: 网络整理| 查看: 265

觉得此处应造一轮,然后……

最后结果只能求亿以下的汉字数字(确切地说,应该是不带亿和兆字,且不超过java整型范围的汉字数字)。我觉得还不错~

/* * paramter end should be a valid index in the String. * calculate a Chinese Number that is less that 1*10^8 (九千九百九十九万九千九百九十九). to extend to 亿 and 兆, one have to wrap this method and introduce more complex condition judgments. *but actually you can represent 1亿 by using some unusual notations such as '一万万' and my algorithm still recognize it well. */ private static int recurse1wCalc(String in,int start,int end,int CurrentLvMPlyer) { int _CurrentLvMultiplyer=CurrentLvMPlyer; int _CurrentLv=0; int ret=0; while(end>=start) { String levelCharacter = in.substring(end, end+1); int res=reduce(levelCharacter,0,11); if(res==-1) {//是数位符 int neoLv=0; if(levelCharacter.equals("十")) { neoLv=1; }else if(levelCharacter.equals("百")) { neoLv=2; }else if(levelCharacter.equals("千")) { neoLv=3; }else {//if(levelCharacter.equals("万")) { neoLv=4; } if(end==start&&neoLv==1) {//十几 _CurrentLvMultiplyer=_CurrentLvMultiplyer*Levels[neoLv]; return 1*_CurrentLvMultiplyer+ret; }else if(neoLv>_CurrentLv) {//正常 _CurrentLvMultiplyer=CurrentLvMPlyer*Levels[neoLv]; _CurrentLv=neoLv; }else {//递归求前置修饰数 return recurse1wCalc(in,start,end,1)*_CurrentLvMultiplyer+ret; } }else {//是数符 ret+=Numbers[res]*_CurrentLvMultiplyer; } end--; } return ret; } static final String[] numOrder = {"一","七","三","两","九","二","五","八","六","四","零"}; static final int[] Numbers = {1,7,3,2,9,2,5,8,6,4,0}; static final int[] Levels = {1,10,100,1000,10000}; public static int reduce(String phrase,int start,int end) {//via mdict-js int len = end-start; if (len > 1) { len = len >> 1; return phrase.compareTo(numOrder[start + len - 1])>0 ? reduce(phrase,start+len,end) : reduce(phrase,start,start+len); } else { return phrase.compareTo(numOrder[start])==0?start:-1; } }

顺便又用了mdict-js里面找到的叫做reduce的二分查找法。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭