怎么判断一个字符串(String)所包含的全部字符是数字?
这个数字可能含小数点!

解决方案 »

  1.   

    太麻烦了吧,有没有可供使用的API啊?
      

  2.   

    try{
       double dd = Double.parseDouble(str);
    }catch(Exception e){
       //非数字字符
    }
      

  3.   

    1楼说滴方法可行,我感觉不要用try{}这种,开销大
      

  4.   

    可以试试用正则表达式                  String in="10.1";
    String patternStr="\\d+\\.?\\d*";
    Pattern p=Pattern.compile(patternStr);
    Matcher m=p.matcher(in);
    boolean b=m.matches();
    System.out.println(b);
      

  5.   

    lz就是嫌#1的方法麻烦~现在做程序一般的项目开销基本都很少考虑了~
    因为现在的内存动则1G、2G的这点开销是在不值一提~大型项目另论~
      

  6.   

     String str1="22566.22222563";
     String str2="22556622";
     final String regexpPP = "^\\d+([\\.]?\\d+)?$";
     Pattern pattern = Pattern.compile(regexpPP);
     Matcher matcher = pattern.matcher(str1);
     if(matcher.find()){
     System.out.println(matcher.group());
     }
     matcher = pattern.matcher(str2);
     if(matcher.find()){
     System.out.println(matcher.group());
     }
      

  7.   

    正则最好Double.parseDouble()要考虑Double的范围,如果超长的串,就会出问题
      

  8.   

    就是考虑到范围,所以才提出Double.parseDouble()来判断~
    因为double会自动转化为科学计数法~他的长度基本上不会超~
    用来判断一个字串是绰绰有余的~
    Double.parseDouble()不是最好的方法,正则是最好的 ~
    但它确实最简洁的方法~
      

  9.   

    String str1="22566.22222563";
     String str2="22556622";
     final String regexpPP = "^\\d+([\\.]?\\d+)?$";
     Pattern pattern = Pattern.compile(regexpPP);
     Matcher matcher = pattern.matcher(str1);
     if(matcher.find()){
     System.out.println(matcher.group());
     }
     matcher = pattern.matcher(str2);
     if(matcher.find()){
     System.out.println(matcher.group());
     }
    --------------------------------------------------------------
    正则表达式不会用啊谁能帮我解释下这段代码都是怎么匹配的可以么?谢谢啊
    还有 提示说 The method compile(String) is undefined for the type Pattern The method mather(String) is undefined for the type Pattern 
    是怎么回事呀 我引入的import java.util.regex.Matcher;是这个包 还用别的么 谢谢!
      

  10.   

    直接匹配就可以了,用不着使用 Pattern 和 Matcher 类了。String str1="22566.22222563";
    String str2="22556622";
    String regExp = "\\d+\\.?\\d*";
    System.out.println(str1.matches(regExp));
    System.out.println(str2.matches(regExp));
      

  11.   

    用正则还要判断负数的情况吧。如果要判断几次的话,还不如用try一下Double.parseDouble()
      

  12.   

    正则表达式:
    .:通配符,匹配所有的单个字符
    +:要求前面的字符出现一次或多次
    *:要求前面的字符出现0次或多次
    ?:这个字符允许前面的字符是可选的
    ^:表示开始
    $:表示结束
    \转意
    \d表示数字
    eg:浮点数的正则表达式为/^-?\d+(\.\d+)?$/
    解释://表示这是一个正则表达式
    ^表示开始
    $表示结束
    -?表示负号可有可无
    \d+一个或多个数字
    ()?表示括号内的内容可选
    括号内的就不用解释了事实上如果不用开始结束符的话这样的字符串也将是匹配的
    dddfdjk-2.3hjdhjf
    因为它含有满足的子串