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

Java-如何在不使用while循环的情况下检查扫描仪输入是否为整数?,java,Java,我已经为我的一个作业编写了一个程序,要求输入一个整数变量。赋值的一个部分是,如果整数输入不是1、2、3或4,则程序应打印一条语句,说明该输入无效,然后结束程序 如果用户输入的输入值大于4或小于1,我已经计算出如何让它打印此语句,但当输入双精度时,我无法计算如何获得相同的结果 通过使用while循环检查输入是否为整数,我成功地使其工作 while (!input.hasNextInt()){ System.out.println("Invalid choice. Good-bye.");

我已经为我的一个作业编写了一个程序,要求输入一个整数变量。赋值的一个部分是,如果整数输入不是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和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);
    }
}
扫描仪输入=新扫描仪(System.in);
整数=0;
布尔有效=假;
System.out.println(“输入编号:”);
if(input.hasNextLine()){
if(input.hasNextInt()){
number=input.nextInt();

if(number>=1&&number…
while(condition)
反复检查“condition”(其中condition是一个“boolean expression/value”)…if(condition)
if(condition)检查了一次条件;@xerx593我从if(condition)得到的非1/2/3/4整数的输出是“无效选择。再见。构建成功(总时间:2秒)”然而,当将上一篇文章中的代码的while改为if时,它会将“Exception in thread”main“java.util.InputMismatchException”作为错误。while循环的替代方法是for循环。但是,您想在这里再次检查您的逻辑。“虽然输入没有另一个要解析的int,但您将继续循环”不正确。您希望“当输入有另一个要解析的int时,继续循环”。无论您使用while还是for循环,您都需要更正逻辑。您使用hasnetint,这意味着代码会自动检查输入的符号是否为整数,如果不是,则(如果是Double或Chars)代码将导致异常警告,代码运行将停止。为避免此情况,请使用try-catch块包围代码。在这种情况下,您将捕获错误的符号(不是整数),并可能中断代码或打印任何警告消息,或者让代码继续运行。