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;
}
有人知道问题出在哪里吗
# 1 楼答案
另一个选项是使用charAt()而不是子字符串,并与“0”、“1”等进行比较。然后可以使用==。然而,更有效的方法是使用正则表达式
# 2 楼答案
你可以让工具箱来做“重担”
输出
# 3 楼答案
正如Kal所说,==运算符决定的是对象是否是同一个对象,而不是它们是否具有相同的值。在Java中,这通常会得到相同的结果,这会使您更难理解为什么使用==来比较字符串是错误的。它有时会起作用,因为Java实习生使用字符串池存储字符串,这意味着Java通常只存储每个值的一个字符串。换句话说,如果字符串x和字符串y都有“asdf”的值,字符串池将只存储“asdf”一次,并且x和y都将引用该字符串对象。强制Java实际创建重复字符串对象的唯一方法是使用“new”关键字。我认为在这种情况下,==由于子字符串而不起作用。在任何情况下,除非您确实在检查被引用的对象是否相同,否则请始终使用。等于()