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

nkkqxpd9  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(475)

我很难用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("|");
    }

}

我怎样才能解决这个问题?

mqkwyuun

mqkwyuun1#

在第20行,你打这个电话:

index = songInfo.indexOf("|");

... 第22行的误差是:
stringindexoutofboundsexception:字符串索引超出范围:-1
... 告诉你了 index 是-1。
这是因为当 indexOf 找不到您请求的字符串,它返回-1。这意味着(正如安迪·特纳评论的那样) songInfo 不包含 | 在程序的这一点上。
下一步尝试:
检查输入数据。
使用调试器并逐步完成代码。
适当处理-1的索引

相关问题