我不断收到此错误。我不确定原因是否是因为文本文档中包含的选项卡。但我无法弄清楚!
输入文件:
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/