我需要做以下练习:
a)制作一个新的文本文件
b)将用户的输入放入该文本文件
c)我们必须在用户继续键入时保存所有用户的输入,但是一旦用户在新行中按Enter键(发送空字符串时),用户就必须退出程序.
为了编码此问题,我编写了以下代码,但是当
我自己尝试,所以我陷入了while循环,当我发送空字符串时无法退出.
那么,有人可以提供解决此问题的方法吗?
谢谢
我尝试了一些在youtube上找到的解决方案,例如在while循环内制作if语句,或添加在循环条件内接受用户输入的代码.
因此,我不知道下一步该怎么做.
我试图通过Eclipse输出查看控制台窗口.
import java.io.*;
import java.util.Scanner;
public class lesson {
public static void main(String[] args) throws IOException {
File file = new File("mytext.txt");
if (file.exists() == false) {
file.createNewFile();
}
PrintWriter pw = new PrintWriter(file);
System.out.println("Enter a text here: ");
String str;
while (true) {
Scanner input = new Scanner(System.in);
str = input.next();
pw.println();
if (str.equals(null)) {
break;
}
}
pw.close();
System.out.println("Done");
}
}
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class Lesson {
public static void main(String[] args) {
File file = new File("mytext.txt");
try (Scanner input = new Scanner(System.in);
PrintWriter pw = new PrintWriter(file)) {
System.out.println("Enter a text here: ");
String str = input.nextLine();
while (str.length() > 0) {
pw.println(str);
pw.flush();
str = input.nextLine();
}
}
catch (IOException xIo) {
xIo.printStackTrace();
}
System.out.println("Done");
}
}
上面的代码至少需要Java 7,因为它使用try-with-resources.应该关闭Scanner,就像应该关闭PrintWriter一样. try-with-resources确保它们是关闭的.请注意,如果文件mytext.txt不存在,则创建新的PrintWriter也会创建该文件;如果文件已经存在,则其内容将被删除并替换为您输入的文本.
在显示提示之后,即,在此处输入文本,然后用户输入一行文本.方法nextLine()将获取所有输入的文本,直到用户按Enter.我再次阅读了您的问题,当用户按Enter键而不输入任何文本时,程序应退出.用户执行此操作时,str是一个空字符串,即长度为零.这意味着我需要在while循环之前为str赋一个值,因此在while循环之前第一次调用nextLine()方法.
在while循环中,我将用户输入的值写入文件mytext.txt,然后等待用户输入另一行文本.如果用户按Enter键而不输入任何文本,则str的长度为零,而while循环将退出.
在Windows 10上使用JDK 12(使用Eclipse for Java Developers,2019-03版本)编写和测试.