StringIndexOutOfBoundsException:字符串索引超出范围:-1

时间:2017-10-31 20:59:49

标签: java

我在BlueJ中的代码很难过。我不断收到此错误,所有语法和其他问题都已解决,但它继续提供此错误。它说它在第22行:

  

StringIndexOutOfBoundsException:字符串索引超出范围:-1

这是我写的代码:

public static void main() {
    String songInfo = MediaFile.readString();
    int index = songInfo.indexOf("|");
    System.out.println("My Favorites");
    System.out.println("------------");
    while(index > 0){
        String title = songInfo.substring(0, index);

        songInfo = songInfo.substring(index + 1);

        index = songInfo.indexOf("|");

        String ratingStr = songInfo.substring(0, index);  //this is the line where the error occurs
        int rating = Integer.valueOf(ratingStr);

        if(rating >= 8){
            System.out.println(title + "(" + rating + ")");
        }

        songInfo = songInfo.substring(index + 1);

        index = songInfo.indexOf("|");
    }

}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在第20行,您拨打此电话:

index = songInfo.indexOf("|");

......以及第22行的错误:

  

StringIndexOutOfBoundsException:字符串索引超出范围:-1

...告诉你index是-1。

这是因为当indexOf找不到您请求的字符串时,它返回-1。这意味着(正如Andy Turner评论的那样)songInfo此时程序中不包含|

接下来要尝试的内容:

  1. 检查您的输入数据。
  2. 使用调试器并逐步执行代码。
  3. 正确处理-1的索引