我只知道用Integer.parseInt(String s)来实现string到integer的转换,但是这个函数还不够方便,第一,他产生runtime exception而不是checked exception,这样如果没有处理异常编译器也没有提示,第二,每次都要try {} catch (NumberFormatExcpetion){}很不方便。类库中或者其他类库中是否有一个简单一点的函数,比如:
class ErrorCheck {
   private boolean hasError;
   public boolean getHasError(){
     return hasError;
   }
}
int TryStrToInt(String s; ErrorCheck ec);
double TryStrToFloat(String s; ErrorCheck ec);
如果转换出错,ErrorCheck.getHasError()返回true?

解决方案 »

  1.   

    异常处理是非常耗费资源的,所以更好的做法,就是在转化前进行判断,而不是依赖于Exception
      

  2.   

    我提供2个判断字符串是否为数字的方法,注意,不考虑溢出问题
      public static boolean isLong(String str) {
        return str.matches("^[\\+-]?[\\d]+$");
      }
      public static boolean isDouble(String str) {
        return str.matches("^[\\+-]?[\\d]+(\\.\\d+)?$");
      }
      

  3.   

    嗯....用异常来转类型面向对象思想都不符合
    在STRING类中有一个方法
    public   class   Q 

    public   static   void   main(String[]   args) 

    String s1="1234";
    String s2="SS123";
    if(s1.matches("(-|\\+)?\\d+")){
    System.out.println("YES");
    }else{
    System.out.println(s1+"is NOT INT");
    }
    if(s2.matches("(-|\\+)?\\d+")){
    System.out.println("YES");
    }else{
    System.out.println(s2+"is NOT INT");
    }

    }
    matches(STRING)这个方法参数是正则表达式前面的(-|\\+)?因为+号有特殊含意所以要转译,表示一个或没有\\d+就是一个或多个
      

  4.   

    谢谢大家,不好意思,刚才有点事出去了仔细看了一下大家的回复,大家的意见都基本是用正则表达式先判断一下,然后再进行转换。
    想不到答案还是:没有现存的共用函数。然而,这可是基本函数阿。有点感叹,这段时间学习java,觉得java有很多优秀的地方,类库也很丰富,可是还是有那么一些基本函数是没有提供的,真有点不可思议,难道这么多java程序员这么多年都在写代码处理这些基本的问题吗?
      

  5.   

    JDK 是最基本的包,任何公司和个人都可以在它上面进行自己的封装。这是优点,使用者可以自己开发工具,也可以去寻找合适的工具
    但也是缺点,因为虽然有了选择真好,但有了太多的选择并不是件好事!!!这点羡慕 .net 的,大家弄好几个就可以了,连工具都基本统一。
    不象java,百花齐放,我都不知道该采哪一朵!结果都没采到!
      

  6.   

    呵呵,我找到函数了,java.text.DecimalFormat  Number parse(String text, ParsePosition pos) 
    在此谢谢各位了