我需要使用我编写的isDigit来完成方法allDigits 当传递有效的String时,如果String的所有字符都是数字,则返回true, 否则就是假的。
到目前为止,我有:
public static boolean isDigit (char ch){
if (ch >= '0' && ch <= '9')
return true;
return false;
}
public static boolean allDigits(String s){
for (int i =0; i<s.length(); i++)
if(isDigit(s.charAt(i)) == true)
return true;
return false;
}
但如果只说
,则返回truepublic static void main(String[] args) {
String s = "abc123";
System.out.println(allDigits(s));
}
OUTPUT:true
但是应该返回false
另外:我的代码有效吗?我觉得这是一种更简单的方法。 感谢任何帮助
答案 0 :(得分:1)
你应该检查每个字符,如果不是数字,则返回false,否则返回true:
public static boolean allDigits(String s) {
for (int i=0; i < s.length(); i++) {
if (!isDigit(s.charAt(i)))
return false;
}
return true;
}
但是处理这个问题的方法更简洁,我要做的就是使用正则表达式:
public static boolean allDigits(String s) {
return s.replaceAll("\\d", "").equals("");
}
请注意,上述方法会将空字符串视为包含所有数字字符。如果您希望空字符串失败,则可以很容易地将此逻辑添加为边缘情况。
答案 1 :(得分:0)
我总是会寻找现有的解决方案。如何使用 https://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/StringUtils.html#isNumeric(java.lang.CharSequence)?
我对这些关于效率和正确性的开源解决方案充满信心。