Java-如何在不使用while循环的情况下检查Scanner输入是否为整数?

时间:2019-01-29 20:47:00

标签: java

我已经为我的一个分配编写了一个程序,要求输入分配给整数变量。赋值的一部分是,如果整数输入不是1、2、3或4,则程序应打印一条声明为无效输入的语句,然后结束程序。

我已经弄清楚了如果用户输入的输入大于4或小于1,如何使它打印此语句,但是当输入双精度数时,我不知道如何得到相同的结果。

我已经设法通过使用while循环来检查输入是否为整数,使其工作,

while (!input.hasNextInt()){
    System.out.println("Invalid choice. Good-bye.");
    input.next();
}
int selection = input.nextInt();

我希望它将其识别为无效输入,然后在此处结束程序。相反,它会等待用户的另一个有效输入

按作业分配的预期结果: 如果用户输入的数字不是1、2、3或4,则程序应打印“无效选择。再见。”“

1 个答案:

答案 0 :(得分:1)

您没有提到输入有效数字或用户输入除整数以外的任何内容会发生什么。
因此,当用户输入非整数值或1到4之间的整数时,此代码将退出程序:

Scanner input = new Scanner(System.in);
int number = 0;
boolean valid = false;
System.out.println("Enter number: ");
if (input.hasNextLine()) {
    if (input.hasNextInt()) {
        number = input.nextInt();
        if (number >= 1 && number <= 4) {
            valid = true;
            System.out.println("Valid choice:" + number);
        }
    }
    input.nextLine();
    if (!valid) {
        System.out.println("Invalid choice. Good-bye.");
        System.exit(0);
    }
}