java - Scanner Java 只读取第一行

标签 java java.util.scanner bufferedreader filereader

我有一个像这样的文本文件:

1 2
3 7
5 8 

每行有 2 个数字。我想对第一个数字和第二个数字做一些不同的事情。我正在尝试扫描文本文件并打印数字以确保我扫描正确。但是,只显示前两个数字 (1 4),然后出现错误:

"java.util.NoSuchElementException
    at java.base/java.util.Scanner.throwFor(Scanner.java:858)
    at java.base/java.util.Scanner.next(Scanner.java:1497)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2161)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2115)
    at com.company.SCC.input(SCC.java:30)
    at com.company.SCC.<init>(SCC.java:15)
    at com.company.Main.main(Main.java:11)"

我不明白问题是什么以及如何逐行扫描文档(我回收了扫描仪的代码并且它之前可以工作)。我不确定我做错了什么,任何帮助将不胜感激。

try {
        String file = "testcase1.txt";
        FileReader in = new FileReader(file);
        BufferedReader br = new BufferedReader(in);
        String s;
        int x;
        while ((s = br.readLine()) != null) {
            Scanner sca = new Scanner(s);
            x = sca.nextInt();
            graph.addVertex(x);
            int y = sca.nextInt();
            graph.addAdjvex(x, y);
            System.out.println(x + " " + y);
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

最佳答案

尝试

try {
    File file = new File("testcase1.txt");
    Scanner sc = new Scanner(file);
    int x, y;
    while (sc.hasNextLine()) {
        x = sc.nextInt();
        y = sc.nextInt()
        graph.addVertex(x);
        graph.addAdjvex(x, y);
        System.out.println(x + " " + y);
    }
    sc.close();
} catch (Exception e) {
    e.printStackTrace();
}

关于java - Scanner Java 只读取第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46623510/

相关文章:

java - NoSuchElementException 未通过 Ideone 测试

java - 从 BufferedReader 获取 null 返回

java - 为什么从 ConcurrentHashMap 中删除第一个条目不会立即反射(reflect)在迭代器中,但删除第二个或后续条目会立即反射(reflect)在迭代器中?

java - Docusign 收件人状态

java - 区间交集

java - 如何只读电影名称?

java - 使用 BufferedReader 从文件中读取

java - 如何使用 Hibernate 检索 SQL 错误消息

java - 这个程序如何在不知道数据类型的情况下接受数据?

java扫描仪不接受两个单词之间有空格