Не работает метод while
Пишу программу которая должна при вводе цифры 1 из консоли дать возможность записать новое дело в список дел, ArrayList. Делаю это через цикл while. При запуске программы и вводе числа 1 выдает сообщение "Какое дело вы хотите добавить?" и все, если я ввожу строку пишет ошибку неправильный формат ввода (Exception in thread "main" java.util.InputMismatchException), если пишу цифру 4 то выдает список ArrayList. Почему не работает код который находится в первом if(actionOfTheUser == 1)?
while((actionOfTheUser = sc.nextInt()) != -1)
{
//добавляем дело в список дел
if(actionOfTheUser == 1)
{
System.out.println("Какое дело вы хотите добавить?");
add = sc.nextLine();
toDoList.add(add);
continue;
}
//просматриваем весь список дел с порядковым номером
if(actionOfTheUser == 4)
{
for(int numberingOfAffairs = 0; numberingOfAffairs < toDoList.size(); numberingOfAffairs++)
{
System.out.println((numberingOfAffairs + 1) + " " + toDoList.get(numberingOfAffairs));
}
}
}
Ответы (1 шт):
Дело в том, что nextInt() читает число, без \n. Поэтому в условии у Вас sc.nextLine() и считывал этот символ перевода строки. И потом, когда sc.nextLine() считал \n, для nextInt() Вы пытались уже ввести строку, поэтому и была эта ошибка.
nextInt()method will throw InputMismatchException if the next token cannot be translated into a valid int value as described below.
while((actionOfTheUser = sc.nextInt()) != -1)
{
// Добавляем дело в список дел
if(actionOfTheUser == 1)
{
System.out.println("Какое дело вы хотите добавить?");
sc.nextLine(); // added
add = sc.nextLine();
toDoList.add(add);
continue;
}
// Просматриваем весь список дел с порядковым номером
if(actionOfTheUser == 4)
{
for(int numberingOfAffairs = 0; numberingOfAffairs < toDoList.size(); numberingOfAffairs++)
{
System.out.println((numberingOfAffairs + 1) + " " + toDoList.get(numberingOfAffairs));
}
}
}