java - 缓冲读取器的标记化问题

标签 java nullpointerexception bufferedreader

所以我正在编写一个java程序,该程序应该不断分析用户的字符串,直到标准输入结束(直到他们按CTRL+D或输入文件的末尾)。程序按预期工作,但是当我按 CTRL+D 时,出现空指针异常。这是有问题的代码:

        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    String line = " ";
    while (line != null) {
        line = in.readLine();
        String[] tokens = line.split(" ");
        System.out.println(line); ......

空指针指向String[] tokens = line.split("");

看起来代码正在尝试标记空行。但我认为我以一种永远不会尝试标记空行的方式编写它。谁能帮帮我吗?

最佳答案

将 while 循环更改为:-

while ((line = in.readLine())!= null) {

并删除其中的第一行。

请注意,您正在读取循环内的行,然后稍后进行测试。因此,您将在文件末尾看到一个 NPE

此外,如果您在阅读后对文件进行标记,我确实更愿意使用 Scanner 类。

关于java - 缓冲读取器的标记化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14384176/

相关文章:

java - 比较两个列表并从一个列表中删除重复项

java - for each 循环的默认空点异常检查器

java - 尝试读取包裹 ArrayList<Object> 时出现 NullPointerException

java - 尝试从在某些标签之间读取的缓冲读取器中提取子字符串

java - 从 BufferedReader 读取特定持续时间

java - 无法停止读取java中的输入

java - 在 JTextArea 上调度关键事件不会移动插入符

java - 通过数组列表进行打印的方法无法正常工作

java - 如何全局初始化网络驱动程序?

java - Lambda 泛型类型界限