帮助,我对Java完全陌生,我正在尝试创建一个循环,该循环将要求用户输入数字。如果用户输入的数字不是数字,则我想捕获异常,然后重试以获取正确的输入。我使用while循环进行此操作,但是在错误发生后用户没有机会输入任何内容,这将使其他所有内容循环。请帮助我了解问题所在以及正确的方法...谢谢。这就是我所拥有的:
import java.util.Scanner;
import java.util.InputMismatchException;
public class simpleExpressions {
public static void main (String[] args) {
Scanner keyboard = new Scanner(System.in);
while ( true ) {
double numOne;
System.out.println("Enter an Expression ");
try {
numOne = keyboard.nextInt();
break;
} catch (Exception E) {
System.out.println("Please input a number only!");
} //end catch
} //end while
} //end main
在子句中使用keyboard.next();
或来使用剩余的无效令牌。keyboard.nextLine()
catch
nextInt
当InputMismatchException
被抛出扫描仪没有移动到下一个标记。相反,它为我们提供了机会处理该令牌使用不同的,更合适的方法,如:nextLong()
,nextDouble()
,nextBoolean()
。
但是,如果您想转移到其他令牌,则需要让扫描程序毫无问题地读取它。为此,请使用可以接受任何数据(例如next()
或)的方法nextLine()
。没有它,无效令牌将不被使用,并且在另一个迭代nextInt()
中将再次尝试处理再次抛出InputMismatchException的相同数据,从而导致无限循环。
有关代码中其他问题的详细信息,请参见@MarkoTopolnik答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句