java - 用java读取文本文件(带制表符)

标签 java java.util.scanner readfile

我不断收到此错误。我不确定原因是否是因为文本文档中包含的选项卡。但我无法弄清楚!

输入文件:

 Baker, William,        Chavez,     04/01/05,   04/10/06
    Sanchez, Jose,      Chavez,     06/15/05,
    Anderson, Robert,   Wong,       04/02/05,   03/30/06

这是我的错误:

  Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:907)
    at java.util.Scanner.next(Scanner.java:1416)
    at readFile.readFile(readFile.java:26)
    at Tree.main(Tree.java:64)

这是我的 readFile 类的代码!想不通

    import java.io.*;
import java.util.*;


public class readFile {
private Scanner x;


public void openFile(){
    try{
    x = new Scanner(new File("patient.txt"));
    }
    catch (Exception e){
        System.out.println("Couldn't find file!");
    }

}

public void readFile(){

    Tree tree = new Tree();
    {
        int key=0;
        while(x.hasNext()){
            String patientName = x.next();
            String doctorName = x.next();
            String currentApp = x.next();
            String nextApp = x.next();
            tree.addNode(key++, patientName, doctorName, currentApp, nextApp);
        }
    }




}
public void closeFile(){
    x.close();
}

}

最佳答案

我的猜测是你的一行或多于或少于四个单词。笔记。 Scanner.next() 读取一个单词,因此如果您说

one{tab}two three{tab}four{tab}five{newline}

这是五个个字。一旦发生这种情况,您将无法获得四个单词的精确倍数,并且您的程序将崩溃。

我建议您一次读取一行并仅使用制表符进行分割。

while (x.hasNextLine()) {
    String line = x.nextLine();
    if (line.trim().isEmpty()) continue; // skip blank lines.

    String[] parts = line.split("\t", 4);

}

关于java - 用java读取文本文件(带制表符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36207603/

相关文章:

java - "The type org.springframework.web.WebApplicationInitializer cannot be resolved. It is indirectly referenced from required .class files"

java 将对象添加到arrayList

java - 只返回 ArrayList 中的最后一个元素

c# - 读取文本文件并获取包含日期值的行

javascript - 使用javascript读取config.xml文件

c++ - 从文件中读取 double

java - 根据未知值拆分字符串次数

java - 使用 Parts 的 Amazon S3 多文件上传

java - Java 中的数据验证和扫描器

java - 从文件导入整数,将它们相乘,然后导出到新文件