我没有变白这个迭代行得通吗?

时间:2019-05-15 09:20:11

标签: java

当我输出此album1.findSongInAlbum()方法时,无论输入什么,我都会“不工作”,或者如果输入正确的名称,我将得到album song found,还有Not working。 / p>

public boolean findSongInAlbum(String songName) {
    for (int i = 0; i < this.albumContainingListOfSongs.size(); i++) {
        if (songName.equals(albumContainingListOfSongs.get(i).getTitle1())) {
            System.out.println("Album song  found: " + albumContainingListOfSongs.get(i).toString());
        } else if (!songName.equals(albumContainingListOfSongs.get(i).getTitle1())) {
            System.out.println("Not workin");
            return false;
        }

    }
    return true;
}

输出应该是一个或另一个,要么是找到的歌曲,要么是没有找到的歌曲,但绝不能同时存在。

1 个答案:

答案 0 :(得分:3)

您的逻辑是错误的。

  1. 如果找到匹配项,则应立即返回true。
  2. 如果找不到匹配项,则应停留在循环中,并且不要返回false。循环完成后才返回false。

这应该有效:

public boolean findSongInAlbum(String songName) {
    for (int i = 0; i < this.albumContainingListOfSongs.size(); i++) {
        if (songName.equals(albumContainingListOfSongs.get(i).getTitle1())) {
            System.out.println("Album song found: " + albumContainingListOfSongs.get(i).toString());
            return true;
        }
    }
    System.out.println("Album song not found");
    return false;
}