public class a2 {
public static int read() {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
sc.close();
return num;
}
public static void out (int a, int b) {
System.out.println("Sum: " + (a+b));
System.out.println("Difference: " + (a-b));
System.out.println("Product: " + (a*b));
System.out.println("Quotient: " + ((double)a/(double)b));
System.out.println("Remainder: " + (a%b));
}
public static void main(String[] args) {
System.out.println("Please enter two integers!:");
int a = read();
int b = read();
out(a,b);
}
}
我对我的代码确实有一点理解上的问题。每次运行代码时,我都会在输入第一个整数后收到此错误消息。
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 a2.read(a2.java:6) at a2.main(a2.java:22)
我想通了,当我删除“sc.close();”行或者当我将两个变量之一定义为常量时,它工作得很好。谁能给我解释一下?
最佳答案
你不能这样做:
int a = read();
int b = read();
因为 read 方法正在关闭扫描器并在后台关闭来自系统的输入流......
全局声明扫描器对象并读取你需要的所有内容,最后关闭它
示例:
private static Scanner sc;
public static int read() {
return sc.nextInt();
}
public static void out(final int a, final int b) {
System.out.println("Sum: " + (a + b));
System.out.println("Difference: " + (a - b));
System.out.println("Product: " + a * b);
System.out.println("Quotient: " + (double) a / (double) b);
System.out.println("Remainder: " + a % b);
}
public static void main(final String[] args) {
System.out.println("Please enter two integers!:");
sc = new Scanner(System.in);
int a = read();
int b = read();
sc.close();
out(a, b);
}
关于关闭扫描仪时出现 java.util.NoSuchElementException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42925771/