关闭扫描仪时出现 java.util.NoSuchElementException 错误

标签 java java.util.scanner nosuchelementexception

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/

相关文章:

Java:查找平均线和编号线

java - HackerRank 扫描器类 Java

java - 我的 java.util.Scanner 无法工作

java - 没有这样的元素 : Unable to locate element: exception coming in selenium

java - HSQL 中的 GenericJDBCException

java - 在java中格式化日期的问题

java - 在 Java 中使用 Scanner 时,在一行中匹配标记时出现问题

java - 在 RecyclerView 关注之前的 EditText

java - 更改基本 Java 动画中的颜色

java - 如何使用 Scanner 处理由无效输入 (InputMismatchException) 引起的无限循环