如何解决java.util.NoSuchElementException?

时间:2014-05-30 09:56:39

标签: java user-interface

这是我的代码:

    try {
        scan_movie_theater = new Scanner(new FileInputStream(new File("d:/movietheater.txt")));
    } catch (FileNotFoundException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }


    while((line = scan_movie_theater.next()) != null ){                 
        i = scan_movie_theater.nextInt();
        System.out.println(line);
        System.out.println(i);          
    }
    scan_movie_theater.close();

我想把文件读成一个字符串一个整数。我可以做到这一点。但是当我完成文件的读取。我看到一个java java.util.NoSuchElementException。我该如何解决这个问题?

这是我的txt文件。

dsa 435
salon 123
xxxx 123214324

3 个答案:

答案 0 :(得分:2)

请参阅Javadoc。 Scanner.next()不会返回null。你必须在调用next()之前检查hasNext()。

95%的代码与问题无关,包括 所有 Swing代码。

答案 1 :(得分:0)

你需要这样做:

    while( scan_movie_theater.hasNext()){
        line = scan_movie_theater.next();
        i = scan_movie_theater.nextInt();
        System.out.println(line);
        System.out.println(i);          
    }

在您当前的实现中,您试图阅读结束。

希望这有帮助。

答案 2 :(得分:0)

当您尝试在集合结束后访问元素时,通常会出现此错误。即因为列表已经结束而实际上不存在的元素。 解决方案:您必须检查EOF以及hasNext()。 next()只是将光标移动到下一个元素,并且您正在尝试访问EOF后不存在的元素。 因此,尝试使用hasNext(),它检查是否存在下一个元素,然后应用next()来检索下一个元素。