gpt4 book ai didi

java - 使用Scanner读取文件Java时无限循环

转载 作者:太空宇宙 更新时间:2023-11-04 06:22:03 29 4
gpt4 key购买 nike

所以我正在尝试解析可能采用以下形式的文本文件

words words words werdz words

words
words
words
words
words

因此,我决定使用 Scanner 而不是 BufferedReader,而且我对使用 Scanner 的经验不是很丰富。我正在尝试读取文件并将其保存到集合中。这是主要代码和补充方法。

主要:

public static void main(String[] args) throws IOException {

LinkedList<String> unmodDict = readDict(new File(args[0]));
String[] unsorted = readUnsorted(new File(args[1]));

...

}

readDict()

public static LinkedList<String> readDict(File file) throws IOException {
//BufferedReader reader = new BufferedReader(new FileReader(file));
Scanner s = new Scanner(new FileReader(file));
String line = null;
LinkedList<String> ll = new LinkedList<>();
int count = 0;
while(s.hasNext()) {
ll.add(s.next());
}
// this loop seems to run finitely.
s.close();
return ll;
}

readUnsorted()

public static String[] readUnsorted(File file) throws IOException {
//BufferedReader reader = new BufferedReader(new FileReader(file));
Scanner reader = new Scanner(new FileReader(file));
int count = 0;
while (reader.hasNext()) {
count++;
}
reader.close();
// The above loop is running infinitely.

Scanner reader2 = new Scanner(new FileReader(file));
String line2 = null;
String[] unsortedWerdz = new String[count];
int i = 0;
while (reader2.hasNext()) {
unsortedWerdz[i] = reader2.next();
i++;
}
reader2.close();

return unsortedWerdz;
}

出于某种原因,readUnsorted 方法中的第一个 while 循环无限运行,但我不明白为什么,因为 readDict 方法中的第一个循环似乎运行良好。有人可以建议我该怎么做吗?

谢谢

最佳答案

它会永远运行,因为您检查是否有下一个可用的String,但您没有检索它!您需要通过 next() 获取它,如下所示:

while (reader.hasNext()) {
reader.next();
count++;
}

否则,扫描器将始终指向它读取的同一个(第一个)元素,并始终报告:是的,这里有另一个 token !

关于java - 使用Scanner读取文件Java时无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27306163/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com