猿问

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

我对 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);

}


绝地无双
浏览 119回答 1
1回答

跃然一笑

您可以使用Double类来解析用户输入,然后只获取正确的值。像这样:public static void factorialNumber() {&nbsp; &nbsp; int factorial = 1;&nbsp; &nbsp; boolean valid;&nbsp; &nbsp; int number = 0;&nbsp; &nbsp; String userInput;&nbsp; &nbsp; do {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Please enter a number: ");&nbsp; &nbsp; &nbsp; &nbsp; userInput = sc.nextLine();&nbsp; &nbsp; &nbsp; &nbsp; valid = validateUserInput(userInput);&nbsp; &nbsp; } while (!valid);&nbsp; &nbsp; number = Double.valueOf(userInput).intValue();&nbsp; &nbsp; System.out.print("The factorial is: " + number + " ");&nbsp; &nbsp; for (int i = 1; i <= number; i++) {&nbsp; &nbsp; &nbsp; &nbsp; factorial *= i;&nbsp; &nbsp; &nbsp; &nbsp; if ((number - i) > 0) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.print("x " + (number - i) + " ");&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; System.out.println("= " + factorial);}private static boolean validateUserInput(String userInput) {&nbsp; &nbsp; if (userInput == null) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("You should enter a number!");&nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; &nbsp; }&nbsp; &nbsp; Double userInputNumber;&nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; userInputNumber = Double.valueOf(userInput);&nbsp; &nbsp; } catch (Exception e) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Please enter a valid number value.");&nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; &nbsp; }&nbsp; &nbsp; if (userInputNumber <= 0) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("ERROR Please enter a positive number");&nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; &nbsp; } else if (userInputNumber - userInputNumber.intValue() > 0) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("ERROR You entered a fractional number!");&nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; &nbsp; }&nbsp; &nbsp; return true;}
随时随地看视频慕课网APP

相关分类

Java
我要回答