我正在编写一个程序,根据用户输入将文本写入文件,输入空白行即停止。当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();
}
}
您的循环是错误的。 Iterator
和Scanner
的工作方式如下:
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
...
}
您必须始终先致电hasNextLine()
,然后再致电nextLine()
。后者将推进扫描仪的内部(文件中的位置),而前者将告诉您是否还有剩余的行。
[Iterator
和更早的Enumeration
同样。