Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2017, 17:05   #1
MaxioN
Новичок
Джуниор
 
Регистрация: 18.03.2017
Сообщений: 2
По умолчанию Конфликт при вводе с использованием Scanner

Здравствуйте! Возникла такая проблема, что при вводе данных с помощью 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. Выход
MaxioN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод строки при вводе Chugun Общие вопросы C/C++ 2 12.03.2012 15:38
Пробелы при вводе KingWaR56 БД в Delphi 6 11.12.2011 09:58
Общий доступ - конфликт изменений при сохранении Saladin Microsoft Office Excel 2 21.06.2010 06:50
Как просканить игру при помощи InqSoft Window Scanner Marsel737 Софт 0 06.12.2009 18:25
ошибка при вводе в DBEdit Evgenii БД в Delphi 3 05.08.2009 20:39