我正在尝试编写一个方法来检查字符串中是否只有数字。由于某种原因,即使我输入包含“1234”的字符串,它也会返回 false。我猜我的问题出在 if 语句上,但我不知道如何解决它。
public static boolean isNumeric(String input)
{
input.trim();
for (int count=0; count<=input.length(); count++)
{
if (input.substring(count) == "0" || input.substring(count) == "1"||
input.substring(count) == "2" || input.substring(count) == "3" ||
input.substring(count) == "4" || input.substring(count) == "5" ||
input.substring(count) == "6" || input.substring(count) == "7" ||
input.substring(count) == "8" || input.substring(count) == "9")
{
integerstate = true;
}
else
{
integerstate = false;
break;
}
}
return integerstate;
}
有人看出问题出在哪里吗?
最佳答案
@Kal 的答案实际上是正确的,但我的天哪,@Petefic,这是一种极其低效的做事方式。 Character
类中有一个方法可以检查 char
是否为数字,您可以只提取每个字符一次,而不是调用 substring()
这么多次。
例如,您可能会这样做
public static boolean isNumeric(String input) {
input = input.trim();
for (char c: input.toCharArray()) {
if (Character.isDigit(c))
return true;
}
return false;
}
对于数字 99999
,您的代码将生成超过 50 个新对象;这将产生一个(来自 toCharArray()
的数组。)
我看到其他一些答案建议使用 Integer.parseInt()
并捕获异常。这不是一个糟糕的想法,但如果许多字符串不是数字,它实际上并不是一个好主意。抛出和捕获异常的计算量非常大;在此过程中创建了许多对象。在不涉及实际错误恢复的情况下应该避免这样做。
关于JAVA:尝试编写一个方法来检查字符串是否为数字。总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9755912/