2 回答

TA贡献1784条经验 获得超8个赞
首先是代码,然后是解释...
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,因为它使用尝试资源。 应该关闭,就像应该关闭一样。试用资源可确保它们已关闭。请注意,如果文件 mytext.txt 不存在,则创建新的文件也会创建该文件,如果该文件已存在,则其内容将被删除并替换为您输入的文本。ScannerPrintWriterPrintWriter
之后显示提示,即在此处输入文本,用户输入一行文本。方法将获取输入的所有文本,直到用户按 Enter 键。我再次阅读了您的问题,当用户在未键入任何文本的情况下按Enter键时,程序应退出。当用户执行此操作时,是一个空字符串,即它的长度为零。这意味着我需要在循环之前分配一个值,因此在循环之前第一次调用方法。nextLine()strstrwhilenextLine()while
在循环中,我将用户输入的值写入文件mytext.txt然后等待用户输入另一行文本。如果用户在未键入任何文本的情况下按 Enter 键,则长度为零,循环将退出。whilestrwhile
在 Windows 10 上使用 JDK 12 编写并进行了测试,使用适用于 Java 开发人员的 Eclipse,版本 2019-03。

TA贡献1783条经验 获得超4个赞
为了实现这一点,我们检查输入的长度是否>0:
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;
Scanner input = new Scanner(System.in);
while ((str = input.nextLine()).length() > 0) {
//str = input.next();
pw.println(str);
}
pw.close();
System.out.println("Done");
}
}
添加回答
举报