You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何实现输入超出范围时重新询问用户输入?

解决方法:用循环实现重复输入验证

你的现有代码只在输入不符合要求时输出提示,但没有让程序回到输入步骤。要实现重复询问直到输入有效,我们可以用do-while循环(或者while循环)来包裹输入和判断逻辑,确保只要输入不符合条件,就重新执行输入流程。

修改后的完整代码:

import java.util.Scanner;

public class MathOperationSelector {
    public static void main(String[] args) {
        Scanner scannerObject = new Scanner(System.in);
        int n1; // 先声明变量

        do {
            System.out.println("Enter what maths to use:");
            System.out.println("Enter 1 for addition");
            System.out.println("Enter 2 for Subtraction");
            System.out.println("Enter 3 for multiplication");
            System.out.println("Enter 4 for Division");
            
            n1 = scannerObject.nextInt();

            // 扩展判断逻辑,同时处理小于1的无效输入
            if (n1 < 1 || n1 > 4) {
                System.out.println("That is not an option. Please try again\n");
            }
        } while (n1 < 1 || n1 > 4); // 输入无效就重复循环

        // 输入验证通过后,可继续执行对应运算逻辑
        System.out.println("You selected option: " + n1);
        scannerObject.close(); // 记得关闭Scanner释放资源
    }
}

关键细节说明:

  • do-while循环的优势:确保至少会执行一次输入提示和读取操作,完美适配这种"先展示提示再验证"的场景。
  • 完善的验证逻辑:原来只判断n1>4,现在补充了n1<1的情况(比如输入0、负数),覆盖所有无效输入场景。
  • 循环终止条件:当输入的n1落在1-4区间内时,循环自动结束,程序可以继续后续的运算逻辑。

如果你更习惯用while循环,也可以这样实现(逻辑核心一致,只是执行顺序略有不同):

import java.util.Scanner;

public class MathOperationSelector {
    public static void main(String[] args) {
        Scanner scannerObject = new Scanner(System.in);
        int n1 = 0; // 初始化一个无效值让循环启动

        while (n1 < 1 || n1 > 4) {
            System.out.println("Enter what maths to use:");
            System.out.println("Enter 1 for addition");
            System.out.println("Enter 2 for Subtraction");
            System.out.println("Enter 3 for multiplication");
            System.out.println("Enter 4 for Division");
            
            n1 = scannerObject.nextInt();

            if (n1 < 1 || n1 > 4) {
                System.out.println("That is not an option. Please try again\n");
            }
        }

        System.out.println("You selected option: " + n1);
        scannerObject.close();
    }
}

两种写法都能满足需求,do-while在这个场景下会更直观一些。

内容的提问来源于stack exchange,提问作者Andrew Chow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:26:11