Здравствуйте! Возникла такая проблема, что при вводе данных с помощью Scanner в одном классе, впоследствии в другом классе выдаёт
java.util.NoSuchElementException.
Код:
public class Main {
private List<Song> songListCommon = new LinkedList<Song>();
private List<CD> cdListCommon = new LinkedList<CD>();
private final int MAIN_MENU_ITEMS = 5;
public static void main(String[] args) {
Main main = new Main();
while (true) {
main.showMainMenu();
main.doMainMenu(main.chooseMenu());
}
}
public void showMainMenu() {
System.out.println("Выберите пункт меню:\n" +
"1. Добавить аудиозапись\n" +
"2. Добавить CD\n" +
"3. Вывод всех аудиозаписей\n" +
"4. Вывод всех CD\n" +
"5. Добавить аудиозапись на CD\n" +
"0. Выход\n");
}
public int chooseMenu() {
Scanner in = new Scanner(System.in);
int choise = -1;
while (choise == -1) {
try {
choise = in.nextInt();
} catch (InputMismatchException e) {
System.out.println("Проверьте правильность ввода и повторите попытку");
in.next();
}
if (choise < 0 || choise > MAIN_MENU_ITEMS) {
System.out.println("Проверьте правильность ввода и повторите попытку");
choise = -1;
}
}
return choise;
}
public void doMainMenu(int choise) {
switch (choise) {
case 1:
songListCommon.add(Song.addSongFromConsole());
break;
case 2:
cdListCommon.add(new CD());
break;
case 3:
getSongListCommon();
break;
case 4:
//todo
System.out.println(cdListCommon);
break;
case 5:
//todo
break;
default:
System.out.println("Неверное значение");
break;
}
}
}
Соответствующий метод из п.1:
Код:
public static Song addSongFromConsole() {
Scanner in = new Scanner(System.in);
System.out.println("Введите автора песни... ");
String author = in.nextLine();
System.out.println("Введите название... ");
String title = in.nextLine();
System.out.println("Введите жанр... ");
String genre = in.nextLine();
System.out.println("Введите формат... ");
String format = in.nextLine();
System.out.println("Введите продолжительность... ");
String length = in.nextLine();
System.out.println("Введите битрейт... ");
int bitrate = 0;
while (bitrate == 0) {
try {
bitrate = in.nextInt();
} catch (InputMismatchException e) {
System.out.println("Проверьте правильность ввода битрейта и повторите попытку");
//in.next();
}
}
Song song = new Song(author,title,genre,format,length,bitrate);
in.close();
return song;
}
Вит что выходит при попытке запуска программы:
Цитата:
Выберите пункт меню:
1. Добавить аудиозапись
2. Добавить CD
3. Вывод всех аудиозаписей
4. Вывод всех CD
5. Добавить аудиозапись на CD
0. Выход
1
Введите автора песни...
1
Введите название...
2
Введите жанр...
3
Введите формат...
4
Введите продолжительность...
5
Введите битрейт...
6
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner. java:862)
at java.util.Scanner.next(Scanner.java :1485)
at java.util.Scanner.nextInt(Scanner.j ava:2117)
at java.util.Scanner.nextInt(Scanner.j ava:2076)
at main.Main.chooseMenu(Main.java:42)
at main.Main.main(Main.java:23)
at sun.reflect.NativeMethodAccessorImp l.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImp l.invoke(NativeMethodAccessorImpl.j ava:62)
at sun.reflect.DelegatingMethodAccesso rImpl.invoke(DelegatingMethodAccess orImpl.java:43)
at java.lang.reflect.Method.invoke(Met hod.java:498)
at com.intellij.rt.execution.applicati on.AppMain.main(AppMain.java:147)
Выберите пункт меню:
1. Добавить аудиозапись
2. Добавить CD
3. Вывод всех аудиозаписей
4. Вывод всех CD
5. Добавить аудиозапись на CD
0. Выход
|