【问题】
Scanner sc = new Scanner(System.in);
do{
int a;
... ...
a=sc.nextInt();
... ...
}while(...);
想利用nextInt()从键盘输入一个整数赋值给一整形变量
由于需要重复输入 将此方法调用放到do-while循环中 第一次能正确输入
而再次进入循环碰到此方法时出现异常如下:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at InputSystem.main(InputSystem.java:206)
【解决办法】
抛出这个NoSuchElementException异常,表示,没有这么多的元素了。
就是,本来这时候不应该再执行的,而你while里居然判断为true,程序还继续执行,
由于没有下一个int了,所以就抛出这个异常。
例如,你输入:1 2 3
本来执行到3时,就没有元素了,而你的while居然还是判断为true,所以,就抛这个异常了。
应改为:
Scanner sc = new Scanner(System.in);
do{
if(sc.hasNext()){
int a;
... ...
a=sc.nextInt();
... ...
}while(...);