Как отобразить ошибку «печати», когда пользователь вводит неправильный символ или неверные входные данные? - PullRequest
0 голосов
/ 13 мая 2019

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

public static void main(String[] args) {

    // Step 1: Create new Scanner object.
    Scanner input = new Scanner(System.in);         

    // Step 2: Prompt the user to enter today's day.
    System.out.print("Enter today’s day as an Integer (0-6): ");
    int Today = input.nextInt();

    // Step 3: Prompt the user to enter the number of days elapsed since today.
    System.out.print("Enter the number of days elapsed since today as an Integer: ");
    int DaysElapsed= input.nextInt();

    // Step 4: Compute the future day.
    int FutureDay = (Today + DaysElapsed) % 7;

    // Step 5: Printing the results.
        // Step 5.1: Today's day result depending the case.
        System.out.print("Today is ");
            // Step 5.2: Future day result depending the case.
        System.out.print(" and the future day is ");

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

С помощью nextInt () вы уже фильтруете допустимые значения в целые числа. Но если вы хотите, чтобы пользователь вводил значения в ограниченном диапазоне, вы можете использовать что-то вроде этого:

    int Today = 0;

    if (input.hasNextInt()) {
        if (input.nextInt() < 32 && input.nextInt() > 0) { //should be between 0-32

            Today = input.nextInt();

        } else {

            throw new Exception("Number must be between 0-32");
        }
    }

Edit:

Если вы хотите продолжить в случае ошибки:

    int Today = 0;
    if(input.hasNextInt()) {

        Today = input.nextInt();
        while (!(Today > 0 && Today < 32)){

            System.out.println("Number must be between 0-32");
            Today = input.nextInt();
        }
    }
0 голосов
/ 13 мая 2019

Так как вы ожидаете здесь только 'int' от scanner.nextInt(), будет выдано исключение InputMismatchException. Таким образом, вы можете легко проверить ваш ввод для int вот так -

try {
   int Today = input.nextInt();
   int DaysElapsed= input.nextInt();
} catch (InputMismatchException){
   System.err.println("Input is not an integer");
}   

Scanner.nextInt () также создает исключения NoSuchElementException и IllegalStateException Кроме того, вы можете проверить, является ли введенная дата действительной, используя условия (today>=1 && today=<31)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...