Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从用户输入多行打印到文件?_Java_File_Filewriter - Fatal编程技术网

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

Java 从用户输入多行打印到文件?,java,file,filewriter,Java,File,Filewriter,我试着写一个程序,要求用户以他们想要保存的打油诗的名字pu,然后它用这个打油诗的名字创建一个文件,然后要求他们写打油诗,然后保存到文件中。我有这个代码来创建文件,但当我试图将打油诗写入文件时,它似乎陷入了一个循环中,并继续与输入文件的第一行保持一致。非常感谢您的帮助 public void start () { System.out.println("<<THIS PROGRAM SAVES A LIMERICK THAT YOU HAVE WROTE>>");

我试着写一个程序,要求用户以他们想要保存的打油诗的名字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();

}
公共作废开始(){
System.out.println(“”);
}    
公共文件创建(){
System.out.println(“”);
name=scan.nextLine();
nameFile=name+“.txt”;
文件文件=新文件(名称文件);
试一试{
if(file.createNewFile()){
System.out.println(“”);
}否则{
System.out.println(“”);
}
}捕获(IOE异常){
e、 printStackTrace();
}
返回文件;
}
公共空写(){
Limerick write=新的Limerick();
File=write.create();
System.out.println(“”);
印刷作家;
试一试{
pw=新的PrintWriter(新的BufferedWriter(新的FileWriter(文件)));
limerick=scan.nextLine();
而(!(limerick.equals(“DONE”)){
普华永道(利默里克);
}
关闭();
System.out.println(“”);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}   
}
公共静态void main(字符串args[]){
利默里克方法=新利默里克();
方法。start();
方法write();
}

在下面的循环中,limerick的值永远不会更新,因此它进入一个无限循环

while (!(limerick.equals("DONE"))) {
    pw.println(limerick);
}
将其更改为以下内容:

while (!(limerick.equals("DONE"))) {
    pw.println(limerick);
    limerick = scan.nextLine();
}

因此,在每次迭代之后,
limerick
的值都会更新。

在下面的循环中,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);
    }

您需要在循环内运行
scan.nextLine()

    while (!((limerick = scan.nextLine()).equals("DONE"))) {
        pw.println(limerick);
    }

limerick
的值应该在
的while(!(limerick.equals(“DONE”)
循环中更改,否则它将是一个无限循环(例如在循环中放置
limerick=scan.nextLine();
)。非常感谢
limerick
的值应该在
的while(!(limerick.equals(“DONE”)
循环中更改,或者它将是一个无限循环(例如将
limerick=scan.nextLine();
放入循环中)。非常感谢