所以我正在编写一个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/