我正在尝试编写最紧凑的解决方案,用于仅使用 nextInt() 方法和它抛出的异常来从用户读取整数以排除错误......这是我现在拥有的代码:
Scanner sn = new Scanner(System.in);
boolean inputNotNull = true;
while (inputNotNull) {
try {
int number = sn.nextInt();
System.out.printf("The number %d is power of 2: %b\n", number, isPowerOfTwo(number));
if (number == 0) {
inputNotNull = false;
}
}
catch(InputMismatchException e) {
System.err.println("Wrong input! Input only integer numbers please...");
}
}
Run Code Online (Sandbox Code Playgroud)
所以,这应该做的是等待来自用户的整数。如果用户输入 0结束程序。我的想法是尝试排除用户使用InputMismatchException输入除整数以外的其他内容时的场景(我知道这不是捕获 RuntimeException 的最佳实践)。当引发异常时,会打印一条错误消息,并且程序返回到 while 循环,在没有发生任何事情的情况下再次询问输入。
我在这里使用的方法有一个缺陷,当用户输入不是整数值的内容时,程序会重复打印出错误消息,永远循环。
如何避免这种情况?
作为一个附带问题,您将如何解决我正在尝试解决的这个问题?
java ×1