为了账号安全,请及时绑定邮箱和手机立即绑定

捕获无效输入并返回输入提示JAVA

捕获无效输入并返回输入提示JAVA

绝地无双 2022-07-06 18:35:05
我对 Java 很陌生,作为我大学课程的一部分,我必须编写一个执行一些基本功能的程序。该程序的一部分是它需要计算用户输入的数字的阶乘。如果用户输入一个负数,那么它必须提示输入一个正数。我必须这样做。但是如果用户输入一个分数,例如 2.2,那么程序应该向用户显示一个错误并提示输入有效数据。我相信应该实施某种排序或尝试捕获,但到目前为止,在花了很多时间之后,我还没有成功地让它工作。任何想法如何让程序捕获 InputMismatchException 错误并再次提示用户输入?该程序的相关代码块如下...public static void factorialNumber() {    int factorial = 1;    boolean valid;    int number = 0;    do {        System.out.println("Please enter a number: ");        number = sc.nextInt();        valid = number > 0;        if (!valid) {            System.out.println("ERROR Please enter a positive number");        }    } while (!valid);    if (number < 0) {        System.out.println("***Error***: Please enter a positive number ... ");        factorialNumber();    }    if (number > 0) {        System.out.print("The factorial is: " + number + " ");    }    for (int i = 1; i <= number; i++) {        factorial *= i;        if ((number - i) > 0) {            System.out.print("x " + (number - i) + " ");        }    }    System.out.println("= " + factorial);}
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

您可以使用Double类来解析用户输入,然后只获取正确的值。像这样:


public static void factorialNumber() {

    int factorial = 1;

    boolean valid;

    int number = 0;

    String userInput;


    do {

        System.out.println("Please enter a number: ");

        userInput = sc.nextLine();

        valid = validateUserInput(userInput);

    } while (!valid);


    number = Double.valueOf(userInput).intValue();

    System.out.print("The factorial is: " + number + " ");


    for (int i = 1; i <= number; i++) {

        factorial *= i;

        if ((number - i) > 0) {

            System.out.print("x " + (number - i) + " ");

        }

    }


    System.out.println("= " + factorial);

}


private static boolean validateUserInput(String userInput) {

    if (userInput == null) {

        System.out.println("You should enter a number!");

        return false;

    }


    Double userInputNumber;

    try {

        userInputNumber = Double.valueOf(userInput);

    } catch (Exception e) {

        System.out.println("Please enter a valid number value.");

        return false;

    }


    if (userInputNumber <= 0) {

        System.out.println("ERROR Please enter a positive number");

        return false;

    } else if (userInputNumber - userInputNumber.intValue() > 0) {

        System.out.println("ERROR You entered a fractional number!");

        return false;

    }


    return true;

}


查看完整回答
反对 回复 2022-07-06
  • 1 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号