繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM