Вывод со сканера числа, стоки. Если введены не они - Exception

С консоли человек должен сначала ввести число. Мы его проверяем. Если у нас не число, бросаем исключение и вводим снова. Если введено число, то переходим ко второй части задачи и теперь вводим текст. Суть проблемы в том, что если мы вводе в 1-й части строкового значения, 1-я часть автоматически игнорируется и сразу идет поиск по 2-й части - по тексту. Что я не понимаю?

Scanner scanner = new Scanner(System.in);

    System.out.print("Введите число для посика: ");
    int keyValueScanner;
    while (scanner.hasNextInt()) {
        try {
            keyValueScanner = scanner.nextInt();
            if (map.containsKey(keyValueScanner)) {
                System.out.println("Введенный ключ " + keyValueScanner + " существует в map");
                scanner.close();
                break;
            } else {
                System.out.print("Введенный ключ " + keyValueScanner + " не существует в map, повторите ввод: ");
            }
        } catch (Exception e) {
            System.out.println("Введено не число, повторите ввод: ");
            scanner.nextInt();
        }
    }


    System.out.print("Введите текст для посика: ");
    while (scanner.hasNext()) {
        try {
            String scannerValueString = scanner.nextLine();
            if (map.containsValue(scannerValueString)) {
                System.out.println("Введенный текст " + scannerValueString + " есть в map");
                scanner.close();
                break;
            } else {
                System.out.print("Введенный текст " + scannerValueString + " не найден в map, повторите ввод: ");
            }
        } catch (Exception e) {
            System.out.println("Введен не текст, повторите ввод: ");
            scanner.nextLine();
        }
    }

Ответы (0 шт):