Вставить ArrayList в условие while? - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть программа, в которой у пользователя будет возможность выбрать одну из нескольких строк для продолжения:

System.out.println("\n\tWelcome! Please choose a song!");
        String songChoice = scan.nextLine();

A Пока-l oop следует этому коду, перехватывая все входные данные, которые не соответствуют условиям.

while(!songChoice.equals("Stay") || (!songChoice.equals("Hello")) || (!songChoice.equals("Solitude"))

И т. Д.

У меня есть около пятнадцати различных песен на выбор, и мне интересно, можно ли вставить ArrayList в условие while вместо записи 15 разные условия для каждой и одной из строк? Что-то вроде ...

while(!songChoice.equals(songs) 

Я пробовал, но не могу заставить его работать ... надеюсь, что кто-то там может помочь мне с этим!

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

Используйте ArrayList для хранения песен:

ArrayList<String> availableSongs = Arrays.asList("Hello", "Stay", "Solitude", "Gratitude");

Scanner scan = new Scanner(System.in); 
System.out.println("\n\tWelcome! Please choose a song!");
boolean validSongChoosen;

while(!validSongChoosen) {
     String songChoice = scan.nextLine();
     if(availableSongs.contains(songChoice)) {
         validSongChoosen = true;
     } else {
         System.out.println("\n\tThe song you have choosen is not available");
     }
}

Небольшое улучшение

Вместо использования ArrayList вы можете использовать Set в качестве других также рекомендуется. Особенность набора состоит в том, чтобы он содержал только уникальные неповторяющиеся элементы.

Это класс для ваших песен. Обычно у вас не может быть двух песен с одинаковым названием!

Так что просто поменяйте ArrayList на HashSet

0 голосов
/ 01 апреля 2020

Пожалуйста, следуйте инструкциям для минимального фрагмента кода. Ваша переменная сканера (scan) не объявлена, и это заставляет нас предполагать, как работает код.

Возможное решение - создать ArrayList, заполнить его всеми строками и проверить, соответствует ли входное значение одному. из этих строк.

List<String> songList = new ArrayList<>();
songList.add("Some song"); //Repeat until satisfied

System.out.println("\n\tWelcome! Please choose a song!");
String songChoice = scan.nextLine();
while (!songList.contains(songChoice)) {
    //Do stuff when input is not a recognised song
}

Я настоятельно рекомендую проверить javadocs ArrayList (или любого класса, с которым вы боретесь) для любых подходящих методов / полей. Вы уже нашли ArrayList, почему вы не поняли, что он делает и как его использовать?

...