Ошибка Java при вводе текста вместо числа - PullRequest
0 голосов
/ 29 ноября 2018

Я просто пытаюсь заставить код работать, когда код снова запрашивает ответ, если введен текст или символ, вместо требуемого целого числа:

import java.util.Scanner;

class timecalc {

int hrs = 0;
int min = 0;
static int hourflag = 0;
static int minflag = 0;
Scanner sc = new Scanner(System.in);

public int getHours() {

    try {
        hourflag = hourflag + 1;
        if (hourflag > 1) {
            System.out.println("Invalid month Please enter hours again:");
        }
        System.out.println("Enter month:");
        return hrs = sc.nextInt();

    } catch (InputMisMAtchException e) {
        System.out.println("entered invalid input " + e);
    }
}

Рассмотрены уже предоставленные ответы, ноне могу получить работоспособное решение

Есть идеи?

1 Ответ

0 голосов
/ 29 ноября 2018

Я не дам вам весь код, а только подсказку или псевдо-код.В качестве упражнения вы можете реализовать его в соответствии с вашими требованиями.

System.out.println("Enter month:");
while (true) {
    try {
        int min = sc.nextInt();
        break;
    } catch (InputMismatchException ex) {
        System.err.println("Invalid input, please enter again");
        sc.nextLine();  //  <----- advance the scanner
    }
}

Здесь логика заключается в цикле, пока мы не получим правильный ввод.Если это неверный ввод, цикл никогда не прерывается.

Кроме того, я бы рекомендовал вам создать только один метод для выборки правильных входных данных и вызова его соответственно из других методов.Вместо того, чтобы дублировать эту логику везде.

...