Integer.parseInt("1");捕获异常,如果有异常,就不是数字,否则就是。java.lang.NumberFormatException

解决方案 »

  1.   

    使用Character.isDigit判断其是否是字符(含一起非数字),反过来判断即可
    public class Test{
      public static void main(String [] args) {
        String alpha = "13中214,34.1b34";
        for(int i=0;i<alpha.length();i++){
          if (!Character.isDigit(alpha.charAt(i)))
            System.out.println("字符串中存在非数字,是第"+(i+1)+"个字符");
        }
      }
    }
      

  2.   

    String str="123456";
    try{
       int x=Integer.getInteger(str).valueOf();
       return x;
       }catch(Exception e){
       return "this is not a Integer";
       }
      

  3.   

    一楼的方法太死板,肯定须使用case循环,过于复杂
    二楼的肯定不行,即使字符串全是数字但是范围超出int的范围,同样会报错!改为long也一样,毕竟有范围限制的说
      

  4.   

    //*************************************************************************
    /**判断一个字符串是否为数值
    *@param TxtData 类型(String)
    *@return 返回值(boolean)
    * (true:字符串为数值 false:字符串不为为数值)
    *@exception
    *@since 1.0
    */
    //author by wjm
    //*************************************************************************
    public boolean IsNumeric(String TxtData) {
    TxtData = TxtData.trim();
    int vl = TxtData.length();
    for(int i = 0; i < vl; i++) {
    char c = TxtData.charAt(i);
                if (!((c >= '0' && c <= '9')||c=='.')) {
    return false;
    }
    }
    return true;
    }
      

  5.   

    咖啡说的有理,不过一般的数字判断用lifeiqhp(飞哥)的方法也行,哪有那么长的阿。
      

  6.   

    str = "1314123";
    我需要如何判断该字符串是否为一个整型
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                    ~~~~
    不同意咖啡的说法。
    只是判断str是否为整型
    整型肯定是有范围的所以同意lifeiqhp(飞哥) 的做法,只是根据要求的范围
    来用Integer或Long.
      

  7.   

    faint
    现在才发现这楼主的提问有问题:
    主题是:如何判断一个字符串是不是全数字     …………我是根据这个来写的
    内容是:我需要如何判断该字符串是否为一个整型吐血ing……
      

  8.   

    function isNum(checkStr)
      {
      var checkOK = "0123456789";
      var allValid = true;
      var allNum = "";
      for (i=0; i<checkStr.length; i++)
      {ch = checkStr.charAt(i);
       for (j=0; j<checkOK.length; j++)
         if (ch == checkOK.charAt(j)) break;
       if (j == checkOK.length)
       { allValid = false;
         break;
       }
       allNum += ch;
      }
      if (!allValid) { return (false);}
      return (true);
      }
      

  9.   

    如果有小数点,或者负号,上面的都不行。下面的仅用于判断实数,虚数不作判断。
    public boolean isRealNumber(String sourceString)
      {
        String S = sourceString.trim();
        if(S == null || S.equals(""))
        {
          return false;
        }
        else
        {
          String S1 = "-0123456789.";
          String S2 = "";
          int count = 0;
          if(S.length()==1)
          {
            if((S.equals("-"))||(S.equals(".")))
            {
              return false;
            }
            else
            {
              if(S1.indexOf(S)<0)
              {
                return false;
              }
              else
              {
                return true;
              }
            }
          }
          else
          {
            if((containNumber(S,"-")>1)||(containNumber(S,".")>1))
            {
              return false;
            }
            else
            {
              if(S.substring(S.length()-1, S.length()).equals("."))
              {
                return false;
              }
              else if((S.indexOf(".")==0)||(S.indexOf("-")>0))
              {
                return false;
              }
              else if(S.indexOf("-")==0)
              {
                if(S.indexOf(".")==1)
                {
                  return false;
                }
                else
                {
                  return true;
                }
              }
              else
              {
                for(int i=0; i<S.length();i++)
                {
                  S2 = S.substring(i,i+1);
                  if(S1.indexOf(S2)<0)
                  {
                    return false;
                  }
                }
                return true;
              }
            }
          }
        }
      }
      

  10.   

    String str="12345634567567899999999999999524323423423425234234";boolean isDigital(String str){
    int INT_FULL_LENGTH = 9;int divide = (int)str.length/INT_FULL_LENGTH;
    if(divide*INT_FULL_LENGTH != str.length){
      divide ++;
    }var tempstr = "";
    for(int i=0;i<divide ;i++)
      if(i == divide){
        tempstr = str.substring(i*INT_FULL_LENGTH ,str.length)
      }else{
        tempstr = str.substring(i*INT_FULL_LENGTH ,(i+1)*INT_FULL_LENGTH)
      }
      try{
         int x=Integer.getInteger(tempstr).valueOf();
         return true;
       }catch(Exception e){
         return false;
       }
    }
    }
      

  11.   

    更正:
    String str="12345634567567899999999999999524323423423425234234";boolean isDigital(String str){
    int INT_FULL_LENGTH = 9;int divide = (int)str.length/INT_FULL_LENGTH;
    if(divide*INT_FULL_LENGTH != str.length){
      divide ++;
    }var tempstr = "";
    for(int i=0;i<divide ;i++)
      if(i == divide){
        tempstr = str.substring(i*INT_FULL_LENGTH ,str.length)
      }else{
        tempstr = str.substring(i*INT_FULL_LENGTH ,(i+1)*INT_FULL_LENGTH)
      }
      try{
         int x=Integer.getInteger(tempstr).valueOf();
         //return true;    }catch(Exception e){
         return false;
       }
       return true;}
    }
      

  12.   

    他奶奶的还移错了!再度更正:String str="12345634567567899999999999999524323423423425234234";boolean isDigital(String str){
    int INT_FULL_LENGTH = 9;int divide = (int)str.length/INT_FULL_LENGTH;
    if(divide*INT_FULL_LENGTH != str.length){
      divide ++;
    }var tempstr = "";
    for(int i=0;i<divide ;i++)
      if(i == divide){
        tempstr = str.substring(i*INT_FULL_LENGTH ,str.length)
      }else{
        tempstr = str.substring(i*INT_FULL_LENGTH ,(i+1)*INT_FULL_LENGTH)
      }
      try{
         int x=Integer.getInteger(tempstr).valueOf();
         //return true;    }catch(Exception e){
         return false;
       }
    }
       return true;
    }
      

  13.   

    /^(\s)*(-?[0-9]+|[0-9]*)?(\s)*$/  //判断整数的正则表达式
    用正则表达式是最好不过的了
    那位大虾知道如何在java中使用正则表达式
    或如何使用perlRegExp模块
    请指点小弟一二 多谢 多谢
    [email protected]
      

  14.   

    用jdk1.4的正则表达,很方便的
      

  15.   

    to HJJH(Thunderbird)
    如何用?请指教
    能给个例子吗?
    多谢!!
      

  16.   

    得HJJH(Thunderbird)指点 终于会用jdk的正则表达式了http://www-900.ibm.com/developerWorks/cn/java/l-regp/part2/index.shtml#2import java.util.regex.*;
    public class isInt{
      public static void main(String[] args){
        Pattern p = Pattern.compile("(-?[0-9]+|[0-9]*)?");
        String str = " 123456789 ";
        Matcher m = p.matcher(str.trim());
        if(m.matches()){
          System.out.println("ok");
        }else{
          System.out.println("no");
        }
      }

      

  17.   

    再写个汉字的
    import java.util.regex.*;
    public class isChinese{
    public static void main(String[] args){
    Pattern p = Pattern.compile("[\u4E00-\u9FA5]");
    Matcher m;
    String str = "It's 汉字";
    int len = 0;
    for(int i=0; i<str.length(); i++){
    System.out.print(str.charAt(i)+": ");
    String s = str.charAt(i)+"";
    m = p.matcher(s);
    if(m.find()){
    System.out.println("汉字");
    len+=2;
    }else{
    System.out.println("非汉字");
    len++;
    }
    }
    System.out.println("length: "+len);// 长度
    }
    }
      

  18.   

    String str="123456";
    try
    {
       int x=Integer.getInteger(str).valueOf();
       return "Yes";
     }catch(Exception e){
       return "NO";
     }
      

  19.   

    简单的问题不简单,
    管它是整数还是浮点数
    用java的类型转换很容易的从捕获异常来判断
    这是聪明的懒人做法
    那换了别的呢,判断输入字符是合法的E'mail地址呢
    那来的异常让你捕获?
    总不能笨笨的一个一个字符地charAt()来判断吧
    烦琐又容易出错
    用正则表达式简单省事,何乐而不为呢?
      

  20.   

    啊,不知道JAVA也有正则表达式,以后一定好好学JAVA,老哥们多帮忙哦