首先,如果之前已经提出过这个问题,我很抱歉,但我找不到解决这个问题的方法。
我正在尝试通过用户输入返回两个值,但是我收到了这些错误,这是我的代码:
import java.util.Scanner;
public class statistic{
public static int getInput(){
Scanner number = new Scanner(System.in);
System.out.print("Integer value: ");
int n = number.nextInt();
number.close();
return n;
}
public static void main(String[] args){
int a = statistic.getInput();
int b = statistic.getInput();
这是错误:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at statistic.getInput(statistic.java:12)
at statistic.main(statistic.java:19)
它仅为第一次调用(int a)返回用户输入,并且除此之外的任何调用都会收到这些错误消息。
答案 0 :(得分:1)
public void close()
关闭此扫描仪。
如果此扫描程序尚未关闭,那么如果其底层可读也实现了Closeable接口,则将调用可读的close方法。如果此扫描仪已关闭,则调用此方法将无效。
在扫描程序关闭后尝试执行搜索操作将导致IllegalStateException。
因此,当您执行number.close()
时,您不只是关闭刚才制作的扫描程序实例;您还关闭System.in
,因此您再也不能使用该特定流。所以,不要做number.close()
,你就没事了。操作系统会在执行结束时自动关闭System.in
,因此您不必担心这一点。