Java indexOf 和 lastIndexOf 返回 -1?请帮忙

标签 java

在下面的代码中,我试图检查一个 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/

相关文章:

java - 无法解析主 URL : 'spark:http://localhost:18080'

java - 使用 eclipse 编写 Pong 程序

java - 在范围内无法访问 MainActivity 类型的封闭实例

java - ThreadPoolExecutor 检查某个任务是否在队列中

java - Spring Boot JPA如何使用实体类从表中选择特定列?

java - 从数据库中加载内容到 TreeTable

java - 如何在字符移位后读取和打印字符串的整个输入?

java-facebook-api : is FB. Canvas.setAutoResize() 实现了吗?

java - 如何在Java中存储树结构?

java - 融合位置提供程序的最低 android 操作系统级别是多少