首页 > 解决方案 > Java - 如何在不使用 while 循环的情况下检查扫描器输入是否为整数?

问题描述

我为我的一项作业编写了一个程序,该程序要求将输入分配给一个整数变量。赋值的其中一个部分是,如果整数输入不是 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,程序应该打印,“无效的选择。再见。” ”

标签: java

解决方案


您没有提到输入有效数字或用户输入除整数以外的任何内容时会发生什么。
因此,当用户输入非整数值或不介于 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);
    }
}

推荐阅读