Не работает метод 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 шт):

Автор решения: entithat

Дело в том, что 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));
        }
    }
}
→ Ссылка