Java中的Scanner的两个实例给出错误

问题描述

标题说明了我的问题。 这是我的代码

class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(system.in);
        Scanner sc2 = new Scanner(system.in);
        
        int x = sc.nextInt();
        String name = sc2.nextLine();
        System.out.println("Test = " + x + name);
    }
}

它给了我这个错误

Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
    at Main.main(Main.java:9)

如果我仅使用一台sc扫描仪,则该代码有效。我的Java版本是SDK v.13.0.1。

解决方法

为什么需要两个单独的扫描仪?一台扫描仪可以同时执行nextIntnextLine。 两个扫描仪是多余的。

问题在于两个实例都使用相同的InputStream。

解决方案:使用一台扫描仪。