写入导致无限循环的文件代码

问题描述 投票:0回答:1

我正在编写一个程序,根据用户输入将文本写入文件,输入空白行即停止。当hasNextLine为false时。但是,运行该程序后,该文件包含同一行输入的数千个实例,该实例将继续增长,直到我杀死该程序为止。有人可以告诉我我要去哪里哪里吗?

import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.PrintWriter;;

public class Lab_Week8_WriteAStory {

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

        PrintWriter writing = new PrintWriter ("Read and Write Files/output.txt");
        Scanner whattotwrite = new Scanner (System.in);
        String writetotfile = whattotwrite.nextLine();

        do {
            writing.println(writetotfile);
        }
        while (whattotwrite.hasNextLine());

        System.out.println ("YOUR TEXT HAS NOW BEEN WRITTEN TO THE FILE.");

        whattotwrite.close();
        writing.close();
    }
}
java loops file-writing
1个回答
2
投票

您的循环是错误的。 IteratorScanner的工作方式如下:

while (scanner.hasNextLine()) {
  String line = scanner.nextLine();
  ...
}

您必须始终先致电hasNextLine(),然后再致电nextLine()。后者将推进扫描仪的内部(文件中的位置),而前者将告诉您是否还有剩余的行。

[Iterator和更早的Enumeration同样。

© www.soinside.com 2019 - 2024. All rights reserved.