Java, сканер, исключение несоответствия ввода

Эта часть кода должна загружать имя ресторана, затем имя меню, затем название еды и цену, но когда я запускаю ее, она принимает все имена, а затем, когда наконец получается цена, я ввожу, например, 7.2 и получаю исключение несоответствия ввода

  String newMenu = "";
  String newRestaurant = "";
  String[] newMenuItem = new String[10];
  double[] price = new double[10];
  int x = 0;  


       while (!(newMenu.equals("none"))) {
           System.out.println("What is the name of the Menu you wish to create (type 'none', if you are done):");
           newMenu = scan.next();
           if (newMenu.equals("none")) {
              System.out.println("Saving entry...");
              continue;

           } else {


              System.out.println("What is the name of the Menu item you wish to create (type 'none', if you are done):");
              newMenuItem[x] = "end";
              while (!(newMenuItem[x].equals("none"))) {
                 newMenuItem[x] = scan.next();

                 if (!(newMenuItem[x].equals("none"))) {
                    System.out.println("What is the price?");
                    price[x]= scan.nextDouble();
                    x++;


                    }    
                 }    
              }
           }

1 ответ

Если я понимаю ввод вашей программы, самое простое решение было бы добавить что-то вроде этого между строками 79 и 80,

while (!scan.hasNextDouble()) {
  // The next token isn't a double.
  if (scan.hasNext()) {
    scan.next();
  } else { 
    System.err.println("Nothing to read");
    System.exit(1);
  }
}

Потому что в настоящее время ваш Scanner не имеет следующий символ как double,

Другие вопросы по тегам