【发布时间】:2018-10-14 14:49:37
【问题描述】:
我对 Java 有点陌生,我无法真正理解在我的代码中的 if 语句之后需要的 break;。如果我在switch 关闭后不添加最后一个break; 语句,我会得到多个具有相同标题但时间长度不同的歌曲副本。
但是,如果我添加break;,我只会在用户的音乐文件中获得一份指定歌曲的副本。我试图理解为什么会这样。是因为如果我不脱离持有switch 的if 语句,那么开关会自我重复吗?
try{
Scanner input = new Scanner(inFile);
//looping through user requested file of music
while (input.hasNextLine()){
//reads new line in the file
String line = input.nextLine();
String[] tokens = line.split("[,]");
// loops through list of all songs
for (int i = 0; i < allSongs.length; i++){
String nameOfSong = tokens[1];
if (allSongs[i].getTitle().equals(nameOfSong)){
String playlistTypeName = tokens[0];
switch (playlistTypeName){
case "playlist1":
playlist1.enqueue(allSongs[i]);
break;
case "playlist2":
playlist2.enqueue(allSongs[i]);
break;
case "playlist3":
playlist3.enqueue(allSongs[i]);
break;
default:
break;
}
break;
}
}
}
【问题讨论】:
-
表示条件
allSongs[i].getTitle().equals(nameOfSong)匹配allSongs中的多个条目。打破循环确保您在找到第一个匹配项后停止添加。 -
谢谢你,这很有道理:)
-
太棒了,非常有帮助,非常感谢。我不知道地图,学到了一些新东西:)。
标签: java if-statement switch-statement break