我最近写了一个判断字符串中的一个字符是不是数字的程序,采用了判断ASCII码的方法,代码如下:
        public boolean check(String str)//输入合法性检测模块
{
int i=0;
char point = str.charAt(i);

for(i=0;i<str.length() && point!='.';i++) 
{
point= str.charAt(i); if(Integer.valueOf(point)<48 || Integer.valueOf(point)>57) //采用判断ASCII码的方法来判别是不是数字
{
System.out.println("输入非法!");
return false;
}
}
return true;
}
虽然运行结果正确了,但是总觉得不太安全,担心换一个操作系统之后结果会不正确,也觉得效率好像不高。请问还有没有更安全、移植性好并且更替高效的方法?

解决方案 »

  1.   

    这个这个跟你操作系统有什么关系吗?你的Java程序难道是直接和操作系统打交道的么?
      

  2.   


    好像也是哦,忘记还有JVM的存在了……
    那么还有什么更高效的办法吗?
      

  3.   

    有关系的,因为不是所有操作系统上的JVM都是ASCII编码。
    应该用Character.isDigit()来判断。
      

  4.   

    系统自带的那个考虑的事情太多了,不如简单的
      public static boolean isDigit(char c) {
        return c >= '0' && c <= '9';
      }

      

  5.   

    StringUtils里面有一个isNumeric可以判断是不是数字的字符串
      

  6.   

    public static boolean check(String ctr){
    char[] ch = ctr.toCharArray();
    for(int i = 0 ; i < ch.length;i++){
    if(Character.isDigit(ch[i])){
    System.out.println("输入非法");
    return false;
    }
    }
    return true;
    }
      

  7.   

    除了用ASCII码还有两个。一个是用Java函数isNumeric。另一个是用正则表达式。。
    正则表达式的如下,是一个方法:
    public static boolean isNumeric(String str) {
    Pattern pa = Pattern.compile("[0-9]*");
    return pa.matcher(str).matches();
    }
    记得要导入java.util.regex.*这个包。。
      

  8.   

    function IsNum(s)
    {
        if (s!=null && s!="")
        {
            return !isNaN(s);
        }
        return false;
    }或者正则表达式
      

  9.   

    明智的方法正则表达式 通用快捷
    合理的方法用isDigit()或者isNumeric判断(一般懒得写正则都用这个,但是一般过滤条件单一,适应能力差)
    lz的方法也是一种。大多数时候都是可以的。下面举例最笨的方法
    强制转换   将String强制转换成想要判断的类型,成为为正常,有异常时就不是该类型。(O(∩_∩)O哈哈~ 这个方法太绝了 乐死我了)
      

  10.   

    你知道我为什么知道这个方法嘛~~~  因为俺也用过。hoho~~~~~