Сканер не принимает входные данные при использовании «try {} catch (исключение e) {}»

#java

#java

Вопрос:

По какой-то причине, когда я использую try и перехватываю с помощью этого сканера, он мгновенно переходит к catch , даже не принимая входные данные внутри try {}

Предполагается, что этот код проверяет, является ли ввод другим типом, отличным от int

Кажется, я забыл уточнить, что код работает, когда я удаляю try и catch

 int mapsehen;
try {
    mapsehen = scanner.nextInt();
    if (mapsehen == 1) {
        DrawMap();

    }
} catch (Exception e) {
    System.out.println("Something went wrong.");

}
 

Комментарии:

1. является ли DrawMap() статической функцией?

2. А также импортировал сканер

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

4. Можете ли вы показать , как вы определяете scanner ?

5. «… вероятно, действительно глупая ошибка …» — Это ваши настоящие ошибки: 1) catch (Exception e) { — Ошибка. Не делайте этого. Перехватывайте исключения, которые вы ожидаете, а не все исключения. 2) System.out.println("Something went wrong."); — Ошибка. Вы отбрасываете всю информацию о возникшем исключении. Итак, вам (и другим) остается только догадываться, что это было. Распечатайте трассировку стека или зарегистрируйте исключение.

Ответ №1:

  Scanner scanner = new Scanner(System.in);  // Create a Scanner object