zoukankan      html  css  js  c++  java
  • 汉字转数字

    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;
        }
    }
  • 相关阅读:
    python中if __name__ == '__main__': 的解析
    python项目练习地址
    HTTP Response Splitting攻击探究 <转>
    常用操作系统扫描工具介绍
    app兼容性测试的几种方案
    svn自动备份并上传到ftp
    有关交易的性能测试点
    修改文件测试的测试点
    新增文件测试的测试点
    添加附件测试的测试点
  • 原文地址:https://www.cnblogs.com/ningvsban/p/4073327.html
Copyright © 2011-2022 走看看