如何使用if语句检查用户输入是否是某种变量类型?

时间:2016-01-30 21:19:04

标签: java if-statement double user-input

我正在创建一个用户输入答案的数学程序。我想显示一条消息“所有解决方案必须以十进制数字输入”。如何确保用户输入双倍,如果不显示该消息。到目前为止我试过这个:

if(userLetter.equalsIgnoreCase("a")) {
    System.out.print("What is the solution to the problem:" + " " + ran1Shift + " " + "+" + " " + ran2Shift + " = ");
    double userNum = input.nextDouble();
        if(userNum == additionAnswer){
            System.out.println("That's correct!");
        }
        else{
            System.out.println("The correct solution is: " + additionAnswer);
        }
    }

所以基本上我现在设置它来显示答案是完全正确还是错误但是如果用户输入非双重的话我怎么能创建另一部分?谢谢你的帮助:))

3 个答案:

答案 0 :(得分:2)

假设inputScanner,那么如果此扫描仪输入中的下一个标记可以解释为双精度,则可以调用Scanner.hasNextDouble() 返回true使用nextDouble()方法的值。类似的内容,

if (input.hasNextDouble()) {
    double userNum = input.nextDouble();
    if (userNum == additionAnswer) {
        System.out.println("That's correct!");
    } else {
        System.out.println("The correct solution is: " + additionAnswer);
    }
} else {
    System.out.println("All solutions must be entered as decimal numbers");
}

答案 1 :(得分:0)

nextDouble保证它只扫描看起来的标记,就像标准输入的双精度一样。由于您希望捕获无效输入,因此您需要做更多工作。

以下是可重入的;它将允许用户继续添加输入,直到引入有效输入。我将用户的提示留作读者的练习。

boolean valid = false;
do {
    try {
        double userNum = Double.parseDouble(input.nextLine());
        // other code to use `userNum` here
        valid = true;
    } catch(NumberFormatException e) {
        System.out.println("Not a valid double - please try again.");
    }
} while(!valid);

答案 2 :(得分:0)

您可以使用循环来允许用户在出错时重新输入数字。

System.out.println("Enter a double number:");
while (!input.hasNextDouble())
{
    System.out.println("Invalid input\n Enter a double number:");
    input.next();
}
double userInput = input.nextDouble();    
System.out.println("You entered: " + userInput);
相关问题