JAVA:尝试编写一个方法来检查字符串是否为数字。总是返回 false

标签 java methods validation

我正在尝试编写一个方法来检查字符串中是否只有数字。由于某种原因,即使我输入包含“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/

相关文章:

java - java中的日期格式为DD和dd

java - java中 boolean 表达式的简化

java - 未调用方法,未显示调试消息

php - 可捕获的 fatal error : Object of class player could not be converted to string

javascript - 时间格式的正则表达式验证

java - 选项出现在 JMenu 上

java - 使用 Objectify4 持久化 map

java - ListView 选择模型的 validator ?

java - 我应该在主方法中添加什么以使我的程序可以运行?

java - Spring 批处理中的验证步骤