我正在为一个程序编写代码,该程序从文本文件中获取单词并按字母顺序排列,但我似乎无法使扫描程序正常工作?
public static void Option1Method() throws IOException {
FileWriter aFileWriter = new FileWriter("wordlist.txt", true);
PrintWriter out = new PrintWriter(aFileWriter);
String word = JOptionPane.showInputDialog(null, "Enter a word");
out.println(word);
out.close();
aFileWriter.close();
String inputFile = "wordlist.txt";
String outputFile = "wordlist.txt";
FileReader fileReader = new FileReader(inputFile);
Scanner scan = new Scanner(fileReader);
scan.nextLine;
String inputLine;
List<String> lineList = new ArrayList<String>();
while ((inputLine = scan.nextLine()) != null) {
lineList.add(inputLine);
}
fileReader.close();
Collections.sort(lineList);
FileWriter fileWriter = new FileWriter(outputFile);
PrintWriter out1 = new PrintWriter(fileWriter);
for (String outputLine : lineList) {
out1.println(outputLine);
}
out1.flush();
out1.close();
fileWriter.close();
}
答案 0 :(得分:4)
Scanner#nextLine
是一种方法。您需要添加括号。取代
scan.nextLine;
带
scan.nextLine();
^
同样Scanner
使用hasNextLine
来检查后续行。在打开的文件上调用scan.nextLine()
最终会导致NoSuchElementException
。替换:
while ((inputLine = scan.nextLine()) != null) {
...
}
与
while (scan.hasNextLine()) {
inputLine = scan.nextLine();
lineList.add(inputLine);
}
请注意,第一次调用scan.nextLine()
会导致第一行被占用而不会被写入已排序的输出文件。如果您打算将所有单词写入文件,请删除或注释此行。