Задать вопрос
@ashot_powershot

Проблема со scanner, пытаюсь ввести с клавиатуры, но не получается, как исправить?

Мне надо добавлять новую заявку. Ввожу данные с клавиатуры.
case 1:
                {
                    зарпутевки c = new зарпутевки(1,"g","h",2,"f",4,2,1,12,43,65);
                    System.out.println("Введите код путевки");
                    c.code= Integer.parseInt(scanner.nextLine());  //27 строка
                    System.out.println("Введите фамилию");
                    c.фамилия=scanner.nextLine();
                    System.out.println("Введите название пансионата");
                    c.название=scanner.nextLine();
                    System.out.println("Введите номер");
                    c.number=Integer.parseInt(scanner.nextLine());
                    System.out.println("Введите вид жилья");
                    c.виджилья=scanner.nextLine();
                    System.out.println("Введите дату заселения");
                    c.date1=Integer.parseInt(scanner.nextLine());
                    System.out.println("Введите дату выезда");
                    c.date2=Integer.parseInt(scanner.nextLine());
                    System.out.println("Введите количество человек");
                    c.quantity=Integer.parseInt(scanner.nextLine());
                    System.out.println("Введите цену");
                    c.price=Integer.parseInt(scanner.nextLine());
                    System.out.println("Введите номер загранпаспорта");
                    c.загпаспорт=Integer.parseInt(scanner.nextLine());
                    System.out.println("Введите номер страховки");
                    c.страховка=Integer.parseInt(scanner.nextLine());
                    зарпутевки.add(c);
                    System.out.println(зарпутевки);
                    a=scanner.nextInt();
                }

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
at java.base/java.lang.Integer.parseInt(Integer.java:675)
at java.base/java.lang.Integer.parseInt(Integer.java:781)
at Main.main(Main.java:27)
Disconnected from the target VM, address: '127.0.0.1:63494', transport: 'socket'
Вот такая ошибка
  • Вопрос задан
  • 55 просмотров
Подписаться 1 Простой 9 комментариев
Пригласить эксперта
Ответы на вопрос 1
@Dementor
программист, архитектор, аналитик
100% считывается пустая строка, которая выдает эксепшен при касте до числа.
Два возможных решения:
  1. Использовать scanner.nextInt() вместо scanner.nextLine() для гарантированного чтения числа
  2. Вынести scanner.nextLine() в отдельный метод, где читать в цикле, пока не встретит нормальное число, которое вернет для использования в Integer.parseInt()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы