0

我正在使用以下逻辑来检查收到的字符串是否为有效数字

package com;


public class Test {
    public static void main(String args[]) {
        String str = "122";
        boolean b = isNumb(str);
        System.out.println(b);
    }

    public static boolean isNumb(String str) {
        String s = str;
        for (int i = 0; i < s.length(); i++) {
            if (!Character.isDigit(s.charAt(i)))
                return false;
        }
        return true;
    }

}

我将在高度多线程的环境中使用它,一次可以有 800-900 个并发用户,请告诉我,如果这段代码有任何漏洞??

请分享你的看法

提前致谢

4

4 回答 4

5

我会使用正则表达式:

public static boolean isNumb(String str) {
    return str.matches("\\d+");
}

要为负数也返回 true,请添加可选的前导破折号:

return str.matches("-?\\d+");
于 2013-08-06T11:16:52.520 回答
2

有更好的方法来检查字符串是否为数字,例如使用正则表达式。

s.matches("^-?\\d+(\\.\\d)?$")

将轻松获取字符串是否为数字,其中 s 是您的字符串。

于 2013-08-06T11:15:39.953 回答
2

验证给定字符串是否为有效数字(不仅仅是整数):

boolean b = str.matches("^[+-]?(?=.)\\d*(\\.\\d+)?$");
于 2013-08-06T11:18:21.383 回答
2

我只需执行以下操作来检查字符串是否为数字:

try {
    final Integer i = Integer.parseInt("Your String");
} catch(final NumberFormatException nfe) {
    //String is no number
}
于 2013-08-06T11:19:05.707 回答