[英]Printing to a file from user input multiple lines?
我正在尝试编写一个程序,要求用户以他们想要保存的打油诗的名字pu,然后创建一个带有该打油诗名称的文件,然后要求他们编写打油诗,然后将其保存。归档。 我有这段代码可用于创建文件,但是当我尝试将打油条写入文件时,似乎陷入了循环并不断地等待输入文件的第一行。 任何帮助将不胜感激?
public void start () {
System.out.println("<<THIS PROGRAM SAVES A LIMERICK THAT YOU HAVE WROTE>>");
}
public File create () {
System.out.println("<<ENTER THE NAME OF THE LIMERICK>>");
name = scan.nextLine();
nameFile = name + ".txt";
File file = new File(nameFile);
try {
if (file.createNewFile() ) {
System.out.println("<<FILE CREATED>>");
} else {
System.out.println("<<FILE ALREADY EXISTS>>");
}
} catch (IOException e) {
e.printStackTrace();
}
return file;
}
public void write () {
Limerick write = new Limerick();
File file = write.create();
System.out.println("<<ENTER THE LIMIRICK>>");
PrintWriter pw;
try {
pw = new PrintWriter (new BufferedWriter (new FileWriter(file)));
limerick = scan.nextLine();
while (!(limerick.equals("DONE"))) {
pw.println(limerick);
}
pw.close();
System.out.println("<<LIMERICK WRITTEN TO FILE>>");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main (String args[]) {
Limerick method = new Limerick();
method.start();
method.write();
}
在以下循环中,limerick的值永远不会更新,因此进入无限循环
while (!(limerick.equals("DONE"))) {
pw.println(limerick);
}
将其更改为如下所示:
while (!(limerick.equals("DONE"))) {
pw.println(limerick);
limerick = scan.nextLine();
}
由此,在每次迭代之后, limerick
的值被更新。
您需要在循环内运行scan.nextLine()
:
while (!((limerick = scan.nextLine()).equals("DONE"))) {
pw.println(limerick);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.