一亿三千万零五元
转换为
130000005

解决方案 »

  1.   

    先判断主数量级是否存在(亿、万),使用Spilt进行分割。再对数组进行替换拼接
      

  2.   

    public   class   Test{   
              int   wan=1;//万位标示   
              int   yi=1;//亿位标示   
              int   flag   =   1;//个,十,百,千的标示   
              long   temp   =   0;   
              String   tmp   =   "";   
              long   result   =   0;   
              String[]   c   =   new   String[15];   
              public   void   init()   {   
                      c[0]   =   "零";                 c[1]   =   "一";                 c[2]   =   "二";                 
                      c[3]   =   "三";                 c[4]   =   "四";                 c[5]   =   "五";   
                      c[6]   =   "六";                 c[7]   =   "七";                 c[8]   =   "八";   
                      c[9]   =   "九";                 c[10]   =   "十";               c[11]   =   "百";   
                      c[12]   =   "千";               c[13]   =   "万";               c[14]   =   "亿";   
              }   
      //   判断数字,非法输入返回88   
              public   int   getCharNO(String   readin)   { 
          
                      for(int i = 0;i < 15; i++){   
                              if(readin.equals(c[i])){   
                                      return   i;   
                              }   
                      }   
                      return   88;   
              }   
              //中国人习惯,18就读十八,不读一十八,只好手动初始化,呵呵   
              public   String   formatInputSting(String   s){   
                      String   fis="";   
                      fis+=s.charAt(0);   
                      if(fis.equals("十")){   
                              return   "一"+s;   
                      }else{   
                              return   s;   
                      }   
              }   
        
              public   long   getResult(String   s)   {   
                      s=formatInputSting(s); 
      System.out.println(s);
                      for   (int i=s.length()-1;i>=0;i--){   
                              tmp+=s.charAt(i);   
                              temp=caseop(tmp);   
                              if   (temp   ==   -1)   {   
                                      System.out.println("错误的参数输入");   
                                      return   -1;   
                              }   
                              result   +=   temp;   
                              tmp   =   "";   
                      }                     return   result;   
              }   
        
              public   long   caseop(String   s)   {   
                      long   co   =   0;   
                      switch   (getCharNO(s))   {   
                      case   88:   
                              return   -1;   
                      case   0:   
                              return   0;   
                      case   1:   
                              co   =   1   *   flag   *   wan   *   yi;   
                              flag   =   1;   
                              return   co;   
                      case   2:   
                              co   =   2   *   flag   *   wan   *   yi;   
                              flag   =   1;   
                              return   co;   
                      case   3:   
                              co   =   3   *   flag   *   wan   *   yi;   
                              flag   =   1;   
                              return   co;   
                      case   4:   
                              co   =   4   *   flag   *   wan   *   yi;   
                              flag   =   1;   
                              return   co;   
                      case   5:   
                              co   =   5   *   flag   *   wan   *   yi;   
                              flag   =   1;   
                              return   co;   
                      case   6:   
                              co   =   6   *   flag   *   wan   *   yi;   
                              flag   =   1;   
                              return   co;   
                      case   7:   
                              co   =   7   *   flag   *   wan   *   yi;   
                              flag   =   1;   
                              return   co;   
                      case   8:   
                              co   =   8   *   flag   *   wan   *   yi;   
                              flag   =   1;   
                              return   co;   
                      case   9:   
                              co   =   9   *   flag   *   wan   *   yi;   
                              flag   =   1;   
                              return   co;   
                      case   10:   
                              flag   =   10;   
                              return   0;   
                      case   11:   
                              flag   =   100;   
                              return   0;   
                      case   12:   
                              flag   =   1000;   
                              return   0;   
                      case   13:   
                              wan   =   10000;   
                              return   0;   
                      case   14:   
                              yi   =   10000;   
                              wan   =   10000;   
                              return   0;   
                      default:   
                              return   0;   
                      }   
              }   
        
              public   static   void   main(String[]   args)   {   
                      Test  test   =   new   Test();   
                      test.init();   
                    
    System.out.print("一亿三千万零五 "+test.getResult("一亿三千万零五")); 
              }   
      }我試過了,OK,應該還有BUG,樓主自己改動一下吧