有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVA:试图编写一个检查字符串是否为数字的方法。总是返回错误

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

有人知道问题出在哪里吗


共 (3) 个答案

  1. # 1 楼答案

    另一个选项是使用charAt()而不是子字符串,并与“0”、“1”等进行比较。然后可以使用==。然而,更有效的方法是使用正则表达式

  2. # 2 楼答案

    你可以让工具箱来做“重担”

    class TestForIntegers {
        public static void main(String[] args) {
            String s = "blah";
            System.out.println(s + " is integer: " + isInteger(s));
            s = "1234";
            System.out.println(s + " is integer: " + isInteger(s));
            s = "max123";
            System.out.println(s + " is integer: " + isInteger(s));
        }
    
        public static boolean isInteger(String s) {
            try {
                Integer.parseInt(s);
                return true;
            } catch (Exception e) {
                return false;
            }
        }
    }
    

    输出

    blah is integer: false
    1234 is integer: true
    max123 is integer: false
    Press any key to continue . . .
    
  3. # 3 楼答案

    正如Kal所说,==运算符决定的是对象是否是同一个对象,而不是它们是否具有相同的值。在Java中,这通常会得到相同的结果,这会使您更难理解为什么使用==来比较字符串是错误的。它有时会起作用,因为Java实习生使用字符串池存储字符串,这意味着Java通常只存储每个值的一个字符串。换句话说,如果字符串x和字符串y都有“asdf”的值,字符串池将只存储“asdf”一次,并且x和y都将引用该字符串对象。强制Java实际创建重复字符串对象的唯一方法是使用“new”关键字。我认为在这种情况下,==由于子字符串而不起作用。在任何情况下,除非您确实在检查被引用的对象是否相同,否则请始终使用。等于()