У вас есть переключатель в цикле в цикле.
Операторы break
внутри корпуса переключателя "выпрыгивают" из переключателя .
Но этот код все еще находится в цикле (который находится в другом цикле).
Таким образом, внешний разрыв влияет на то, как происходит "зацикливание".
Итак, реальный ответ здесь - отступить назад и посмотреть на каждую из этих вещей в отдельности. И один хороший способ достичь этого - это , а не , объединяющий так много вещей в одном методе. Скорее используйте отдельный метод, который выполняет обработку переключения самостоятельно.
Другими словами: вы добавили слишком много сложности в свой код. И теперь вы потеряли след того, что происходит.
А если быть более точным: в вашем случае вы используете неправильное решение. Значение: то, что вы на самом деле хотите сделать, это отобразить строку (например, "playlist1" на конкретный объект. Поэтому вместо того, чтобы делать это вручную , используя инструкцию switch, вы может использовать
Map<String, PlayList> playListsByName = new HashMap<>();
playListsByName.put("playlist1", playlist1);
...
И тогда ваш оператор switch пропадает, и вместо этого вы делаете что-то вроде:
PlayList plist = playListsByName.get(yourToken);
if (plist != null) {
plist.enqueue(allSongs[i]);
} else {
... error handling: invalid play list token