从用户输入多行打印到文件?

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