汉字转数字
import java.util.Scanner; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.util.HashMap; /* 汉字转数字的程序。输入:八亿零二十万零一百零一 输出:800200101 汉字有效字符为:零一二(两)三四五六七八九十百千万亿 */ public class HanToNumber{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); HanToNumber mainObj = new HanToNumber(); int res = mainObj.getNumFromHan(sc.next()); System.out.println(res); } public int getNumFromHan(String str){ Map<Character,Integer> map = new HashMap<Character,Integer>(); map.put('零',0); map.put('一',1); map.put('二',2); 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); map.put('亿',100000000); char[] arr = str.toCharArray(); int len = str.length(); List<Integer> resList = new ArrayList<Integer>(); int tmp = 0; for(int i=0; i<len; i++){ if(!isUnit(arr[i])){ tmp += Integer.parseInt(String.valueOf(map.get(arr[i]))); if(i==len-1){ resList.add(tmp); } }else{ tmp *= map.get(arr[i]); if(i<len-1 && !isUnit(arr[i+1]) || i==len-1){ resList.add(tmp); tmp = 0; } } } int res = 0; for(Integer in:resList){ res += in; } return res; } public boolean isUnit(char c){ boolean isUnit = false; if(c=='十' || c=='百' || c=='千' || c=='万' || c=='亿'){ isUnit = true; } return isUnit; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架