在下面的代码中,我试图检查一个 int(转换为 String)是否包含重复的数字。
public static boolean hasDupes(int n)
{
String number = new String();
number = Integer.toString(n);
int digit = 0;
System.out.println(num.indexOf(digit));
System.out.println(num.lastIndexOf(digit));
while(digit < 10)
{
if(number.indexOf(digit) != number.lastIndexOf(digit))
{
return true;
}
digit++;
}
//System.out.println(n);
return false;
}
我放入 System.out.println
行是因为我不确定为什么我的方法不起作用。他们总是打印出“-1”。我不明白索引怎么会是 -1,以及为什么它不起作用。
最佳答案
number.indexOf(digit)
digit
是一个 int
。传递给 indexOf
它将用作字符编号,因此您将查找 char 0(空字符)而不是 ASCII 数字 '0'
。该字符自然不在字符串中,因此您得到 -1。
您可能正在考虑 indexOf(String)
方法。例如
var dstr= ""+digit;
if (number.indexOf(dstr) != number.lastIndexOf(dstr))
return true;
或者,如果您想使用一系列字符代码:
for (char digit= '0'; digit<='9'; digit++)
if (number.indexOf(digit) != number.lastIndexOf(digit))
return true;
关于Java indexOf 和 lastIndexOf 返回 -1?请帮忙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4047830/