从用户输入多行打印到文件?
Printing to a file from user input multiple lines?
我正在尝试编写一个程序,要求用户输入他们想要保存的打油诗名称,然后创建一个具有该打油诗名称的文件,然后要求他们写打油诗,然后将其保存到文件中。我有这个代码来创建文件,但是当我尝试将打油诗写入文件时,它似乎陷入循环并继续将第一行输入到文件中。非常感谢任何帮助?
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();
}
在下面的循环中,打油诗的值永远不会更新,因此进入无限循环
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);
}
我正在尝试编写一个程序,要求用户输入他们想要保存的打油诗名称,然后创建一个具有该打油诗名称的文件,然后要求他们写打油诗,然后将其保存到文件中。我有这个代码来创建文件,但是当我尝试将打油诗写入文件时,它似乎陷入循环并继续将第一行输入到文件中。非常感谢任何帮助?
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();
}
在下面的循环中,打油诗的值永远不会更新,因此进入无限循环
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);
}