InputMismatchException при работе с java.util.Scanner в Java - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь создать своего рода программу хранения инвентаря, где пользователи могут входить, удалять и искать товары и цены.Однако при вводе значений я получаю исключение InputMismatchException.Вот код WIP, который у меня есть:

String item;
        double price;

        while(running == true){

            System.out.println("Enter the item");

            item = input.nextLine();

            System.out.println("Enter the price");

            price = input.nextDouble();

            inv.put(item, price);

           System.out.println(inv);

        }

Что я заметил, так это то, что во второй итерации цикла он пропускает входные данные String.Вот вывод консоли:

Enter the item
box
Enter the price
5.2
{box=5.2}
Enter the item
Enter the price
item
Exception in thread "main" java.util.InputMismatchException

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

input.nextLine () переводит сканер на следующую строку ввода, а input.nextDouble () - нет.Поэтому вам нужно либо переместить сканер на следующую строку:

            price = input.nextDouble();
            input.nextLine();

, либо вместо этого вы можете использовать nextLine () напрямую и разобрать его в Double:

            price = Double.parseDouble(input.nextLine());

См. Этот вопрос для получения дополнительной информации: Java: различия .nextLine () и .nextDouble ()

0 голосов
/ 26 сентября 2019

Добавьте input.nextLine (), как показано ниже:

String item;
        double price;

        while(running == true){

            System.out.println("Enter the item");

            item = input.nextLine();

            input.nextLine();

            System.out.println("Enter the price");

            price = input.nextDouble();

            input.nextLine();

            inv.put(item, price);

           System.out.println(inv);

        }
...