您好基本上我尝试使用此代码
for(int character=0; character<roomNo.length(); character++){
if((Character.isDigit(roomNo.charAt(character)))) {
}
}
return true;
循环遍历字符串并查看它是否包含任何数字。我试图创建一个检查String是否为数字的方法,如果该方法应返回true。到目前为止,它不起作用?任何帮助将不胜感激:)
答案 0 :(得分:9)
您可以使用regexp检查:
roomNo.matches("\\d+");
答案 1 :(得分:4)
为什么不做roomNo.matches("\\d+")
?
\d
匹配任何数字,因此\d+
匹配任何只有数字的字符串。
答案 2 :(得分:1)
因为它是一个房间号,我假设你正在寻找一个整数,所以我推荐Integer.parseInt()。
答案 3 :(得分:1)
这种验证的显式循环的通常形式是:
for each character in the string
if not acceptable
return false
return true
至少有两种选择可以避免显式循环,正则表达式(已经建议)并尝试在try-catch中转换为适当的类型。
例如,如果需要整数,请调用Integer.parseInt并捕获NumberFormatException。如果发生异常,则返回false。如果没有,返回true。转换策略对于更复杂的格式尤其有用,例如double。
答案 4 :(得分:0)
你可以像
这样的东西String numbers = "0123456789"
if(numbers.indexOf(roomNo.charAt(character)) >= 0)
...
答案 5 :(得分:0)
试试这个:
for(int character=0; character<roomNo.length(); character++){
if(!Character.isDigit(roomNo.charAt(character))) {
return false;
}
}
return true;
或正如其他人所说,使用正则表达式
答案 6 :(得分:0)
我建议使用Apache Commons的NumberUtils
Apache Commons isNumber(String)
Apache Commons isDigits(String)
个人偏好是使用经过验证的实施,而不是自己动手实施。