扫描仪-NoSuchElementException

时间:2015-06-20 13:24:16

标签: java

我正在执行以下代码,以使用scanner对象从输入流中读取字符串。

   public class Test{
    public static void main(String[] args) {
        String userInput1 = getUserInput();
        System.out.println(userInput1);
        String userInput2 = getUserInput();
        System.out.println(userInput2);     
    }

private static String getUserInput() {
        System.out.println("Enter the String");
        Scanner scanner = new java.util.Scanner(System.in);
        String input = scanner.next();
        scanner.close();
        return input;
    }
}

第一次调用方法getUserInput成功没有任何问题。但是他第二次调用引发了NoSuchElementException。

Enter the String
test1
test1
Enter the String
Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1371)

1 个答案:

答案 0 :(得分:0)

代码有两个问题

  1. 假设已经有输入。在您调用while(!scanner.hasNext()){}的位置之前的简单scanner.next();应该有效。

  2. 您正在创建多个扫描程序(这可能会影响代码,也可能不会影响代码,但会影响效率) 相反,Scanner scanner = new Scanner(System.in);可以分解为方法外的声明(Scanner scanner;),然后在主方法或初始化代码中定义(scanner = new Scanner(System.in);)。