2

您好,基本上我尝试使用此代码

    for(int character=0; character<roomNo.length(); character++){
        if((Character.isDigit(roomNo.charAt(character)))) {
        }
    }
    return true;

遍历一个字符串并查看它是否包含任何数字。我正在尝试创建一个方法来检查字符串是否为数字,如果是,则该方法应返回 true。到现在还不行?任何帮助,将不胜感激 :)

4

7 回答 7

9

您可以使用正则表达式检查:

roomNo.matches("\\d+");
于 2012-12-02T21:36:18.020 回答
4

为什么不直接做roomNo.matches("\\d+")

\d匹配任何数字,因此,\d+匹配任何只有数字的字符串。

于 2012-12-02T21:36:33.230 回答
1

由于它是一个房间号,我假设您正在寻找一个整数,所以我推荐 Integer.parseInt()。

于 2012-12-02T21:40:44.507 回答
1

这种验证的显式循环的通常形式是:

for each character in the string
  if not acceptable
    return false
return true

至少有两种替代方法可以避免显式循环,即正则表达式(已经建议)和尝试在 try-catch 中转换为适当的类型。

例如,如果您想要一个整数,请调用 Integer.parseInt 并捕获 NumberFormatException。如果发生异常,则返回 false。如果不是,则返回 true。转换策略对于更复杂的格式特别有用,例如双精度。

于 2012-12-02T21:44:57.043 回答
0

你可以这样

String numbers = "0123456789"
if(numbers.indexOf(roomNo.charAt(character)) >= 0)
...
于 2012-12-02T21:37:56.287 回答
0

试试这个:

    for(int character=0; character<roomNo.length(); character++){
    if(!Character.isDigit(roomNo.charAt(character))) {
         return false;
    }
}
return true;

或者正如其他人所说,使用正则表达式

于 2012-12-02T21:38:07.757 回答
0

我建议使用 Apache Commons 的 NumberUtils

Apache Commons isNumber(String)

Apache Commons isDigits(字符串)

个人偏好是使用经过验证的实现,而不是我自己的。

于 2012-12-02T22:00:58.320 回答