当用户输入错误的字符或无效的输入数据时,如何显示“打印”错误?

时间:2019-05-13 20:07:23

标签: java eclipse

我想知道是否有一种简单的方法来显示错误的字符或无效的输入数据。

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 :(得分:0)

由于您只期望scanner.nextInt()的'int',它将抛出InputMismatchException异常。因此,您可以像这样在此处轻松验证int的输入-

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

Scanner.nextInt()还会引发NoSuchElementExceptionIllegalStateException异常 此外,您可以使用条件(today>=1 && today=<31)来验证输入日期是否有效

答案 1 :(得分:0)

使用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");
        }
    }

编辑:

如果您想继续出错:

    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();
        }
    }