首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当用户输入错误字符或无效输入数据时,如何显示“打印”错误?

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

Stack Overflow用户
提问于 2019-05-14 04:07:23
回答 2查看 43关注 0票数 0

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

代码语言:javascript
运行
复制
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 ");
EN

回答 2

Stack Overflow用户

发布于 2019-05-14 04:20:12

因为你在这里只期待来自scanner.nextInt()的'int‘,所以它将抛出一个InputMismatchException异常。这样你就可以很容易地在这里验证你对int的输入了-

代码语言:javascript
运行
复制
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)来验证输入日期是否有效

票数 0
EN

Stack Overflow用户

发布于 2019-05-14 04:22:00

使用nextInt(),您已经将允许的值过滤为整数。但是,如果您希望用户在有限的范围内输入值,则可以使用以下内容:

代码语言:javascript
运行
复制
    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");
        }
    }

编辑:

如果您想在出错时继续:

代码语言:javascript
运行
复制
    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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56119219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档