这段简单的代码:
import java.util.Scanner;
public class TestScanner {
public static void main(String[] args){
Scanner sc1 = new Scanner(System.in);
int number1 = sc1.nextInt();
sc1.close();
Scanner sc2 = new Scanner(System.in);
int number2 = sc2.nextInt();
sc2.close();
}
}
总是给我这个错误:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:838)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextInt(Scanner.java:2091)
at java.util.Scanner.nextInt(Scanner.java:2050)
at mainpkg.TestScanner.main(TestScanner.java:14)
这个也不起作用。这次它落入一个永无止境的循环中!
import java.util.Scanner;
public class TestScanner {
public static void main(String[] args){
Scanner sc1 = new Scanner(System.in);
int number1 = sc1.nextInt();
sc1.close();
Scanner sc2 = new Scanner(System.in);
while(!sc2.hasNextInt())
;
int number2 = sc2.nextInt();
sc2.close();
}
}
为什么?
答案 0 :(得分:2)
问题是sc1.close();
关闭了基础流。第二次,你试图从封闭的流中读取,所以它显然失败了。
答案 1 :(得分:0)
您应该每次使用hasNextInt
进行检查,而不是仅仅假设还有更多要阅读的内容。