0

テキスト ファイルから単語を取得してアルファベット順に並べ替えるプログラムのコードを書いていますが、スキャナが動作しないようです。

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();
}
4

1 に答える 1

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()により、ソートされた出力ファイルに書き込まれることなく、最初の行が消費されることに注意してください。すべての単語をファイルに書き込む場合は、この行を削除するかコメントしてください。

于 2013-04-06T18:01:00.343 に答える