A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ciying88 中级黑马   /  2017-3-15 21:52  /  755 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

汉字转换为阿拉伯数字,一百三十四亿一千零二十三万六千六百零九.


code:
package number_converter;

//汉字转换为阿拉伯数字
//一百三十四亿一千零二十三万六千六百零九
//最终应该转为这样:13410236609

public class MyConverter2 {
        public static void main(String[] args) {
                long d=convert("一百三十四亿一千零二十三万六千六百零九");
                System.out.println(d);
        }
       
        public static long convert(String s){
                String [] s1=s.split("亿");
                long num=restore(s1[0])  *100000000L;
               
               
                String [] s2=s1[1].split("万");
                num=restore(s2[0])  *10000L +num;
               
                num=num+restore(s2[1]);
               
                return num;
        }
       

        public static int  convertNumber(char c){
                int num=0;
                switch(c){
                case '零': num= 0;  break;
                case '一': num= 1;  break;
                case '二': num= 2;  break;
                case '三': num= 3;  break;
                case '四': num= 4;  break;
                case '五': num= 5;  break;
                case '六': num= 6;  break;
                case '七': num= 7;  break;
                case '八': num= 8;  break;
                case '九': num= 9;  break;
                }
                return num;
        }
       
        //  比如  一千三百五十1  还原为1351
        public static int restore(String s){
                char [] array=s.toCharArray();
                int num=0;
               
                for (int i=0;  i<array.length-1;  i++){
                        if (array[i] != '零'  &&  array[i+1]=='千'  ){
                                num=convertNumber( array[i] )*1000;
                        }else
                        if (array[i] != '零'  &&  array[i+1]=='百'  ){
                                num=num + convertNumber( array[i] )*100;
                        }else
                        if (array[i] != '零'  &&  array[i+1]=='十'  ){
                                num=num + convertNumber( array[i] )*10;
                        }
                }
                return num+convertNumber(array[array.length-1]);
               
        }

       
}

1 个回复

倒序浏览
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马