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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Gaara 高级黑马   /  2013-3-6 11:22  /  1955 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

汉字转换为阿拉伯数字,一百三十四亿一千零二十三万六千六百零九,求转换
有些想法 先定义对应关系
零对应0
一对应1
二对应2,如此类推
从左到右一个一个汉字扫描,遇到什么中文,就把什么数字写入字符串,到最后的话,如果以十结尾,则在结尾加1个0,百结尾加2个,如此类推即可


但总感觉 不太好求指教下

评分

参与人数 2黑马币 +100 收起 理由
chuanyueing + 90
洪建超 + 10

查看全部评分

3 个回复

倒序浏览
本帖最后由 朱玺 于 2013-3-6 12:07 编辑
  1. package number_converter;

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

  5. public class MyConverter2 {
  6.     public static void main(String[] args) {
  7.         long d=convert("一百三十四亿一千零二十三万六千六百零九");
  8.         System.out.println(d);
  9.     }
  10.      
  11.     public static long convert(String s){
  12.         String [] s1=s.split("亿");
  13.         long num=restore(s1[0])  *100000000L;
  14.          
  15.          
  16.         String [] s2=s1[1].split("万");
  17.         num=restore(s2[0])  *10000L +num;
  18.          
  19.         num=num+restore(s2[1]);
  20.          
  21.         return num;
  22.     }
  23.      

  24.     public static int  convertNumber(char c){
  25.         int num=0;
  26.         switch(c){
  27.         case '零': num= 0;  break;
  28.         case '一': num= 1;  break;
  29.         case '二': num= 2;  break;
  30.         case '三': num= 3;  break;
  31.         case '四': num= 4;  break;
  32.         case '五': num= 5;  break;
  33.         case '六': num= 6;  break;
  34.         case '七': num= 7;  break;
  35.         case '八': num= 8;  break;
  36.         case '九': num= 9;  break;
  37.         }
  38.         return num;
  39.     }
  40.      
  41.     //  比如  一千三百五十1  还原为1351
  42.     public static int restore(String s){
  43.         char [] array=s.toCharArray();
  44.         int num=0;
  45.          
  46.         for (int i=0;  i<array.length-1;  i++){
  47.             if (array[i] != '零'  &&  array[i+1]=='千'  ){
  48.                 num=convertNumber( array[i] )*1000;
  49.             }else
  50.             if (array[i] != '零'  &&  array[i+1]=='百'  ){
  51.                 num=num + convertNumber( array[i] )*100;
  52.             }else
  53.             if (array[i] != '零'  &&  array[i+1]=='十'  ){
  54.                 num=num + convertNumber( array[i] )*10;
  55.             }
  56.         }
  57.         return num+convertNumber(array[array.length-1]);
  58.          
  59.     }     
  60. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
朱玺 发表于 2013-3-6 12:03

你看看这个方法怎么样,有什么问题可以再问我
回复 使用道具 举报
朱玺 发表于 2013-3-6 12:08
你看看这个方法怎么样,有什么问题可以再问我

谢了   但话说我怎么没技术分。。。。。

评分

参与人数 1黑马币 +90 收起 理由
邹学良 + 90 很给力!

查看全部评分

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