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
相关产品推荐
相关产品推荐

