java有没有关于验证数字类型的类,如是否负小数,是否自然数等等

解决方案 »

  1.   

    用正则可以,
    apache的commons包里面,貌似有工具类。
      

  2.   

    Integer.parseInt方法如果不是整数则抛出异常.可以返回值
    Double.parseDouble是检验小数的
      

  3.   


    问题是又有小数,又有整数呢。用你这方法转换后,转换不了会出错,如果用Double.parseDouble
    就算你给他个2,转出来也会变2.0的
      

  4.   

    apache的common包的正则与java.regex包的正则,哪个好用?
      

  5.   

    给你推荐下这个,就是在java类中使用正则表达式验证数据,使用Pattern类和Matcher类来实现验证,下边这个例子供你参考下:
    public class PatternTest {public void testParttern(){
    //表达式的功能:验证必须为数字(整数或小数)
    String pattern = "[0-9]+(.[0-9]+)?";
    //对()的用法总结:将()中的表达式作为一个整体进行处理,必须满足他的整体结构才可以。
    //(.[0-9]+)? :表示()中的整体出现一次或一次也不出现
    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher("2");
    boolean b = m.matches();
    if(b){
    System.out.println("istrue:"+b);
    }}
    public static void main(String[] args) {
    PatternTest pt = new PatternTest();
    // pt.testFormat("2");
    pt.testParttern();
    }
    }
      

  6.   

    用正则                String str="要验证的数字";
    if(str.trim().replaceFirst("^\\d+[.]?\\d+$", "").equals("")){
    System.out.println(str+"是正数");
    }
    if(str.trim().replaceFirst("^-\\d+[.]?\\d+$", "").equals("")){
    System.out.println(str+"是负数");
    }
    if(str.trim().replaceFirst("\\d+", "").equals("")){
    System.out.println(str+"是整数");
    }
    if(str.trim().replaceFirst("^(-)?\\d+[.]+\\d+$", "").equals("")){
    System.out.println(str+"是小数");
    }