在 Java 中使用 PrintWriter 写入多行
Writing multiple lines using PrintWriter in Java
如果这个问题已经在 Internet 上得到解答,我很抱歉,但是通过查看 'similar questions' 我找不到我的问题的答案。
所以基本上我试图理解为什么使用 PrintWriter 将文本行写入文件显然会每 2 行跳过第一行。
这是我自己用的方法class:
public class IO_Utilities {
public static void Write(String outputName){
PrintWriter outputStream = null;
try {
outputStream = new PrintWriter(outputName);
} catch (FileNotFoundException e) {
System.out.println(e.toString());
System.exit(0);
}
System.out.println("Write your text:");
Scanner user = new Scanner(System.in);
while(!user.nextLine().equals("stop")) {
String line = user.nextLine();
outputStream.println(line);
}
outputStream.close();
user.close();
System.out.println("File has been written.");
}
当我从 main 调用它时:
IO_Utilities.Write("output.txt");
并写:
first line
second line
third line
stop
stop
输出的文字实际上是:
second line
stop
我确定问题出在 while 循环上,因为如果我手动输入行,它会正常工作,但我不明白为什么它会像现在这样。
while(!user.nextLine().equals("stop")) {
String line = user.nextLine();
outputStream.println(line);
}
您在循环中重复了 user.nextLine();
,因此行与您比较为“停止”的行不同。
将该部分重写为:
String line = user.nextLine();
while( !line.equals("stop")) {
outputStream.println(line);
line = user.nextLine();
}
如果这个问题已经在 Internet 上得到解答,我很抱歉,但是通过查看 'similar questions' 我找不到我的问题的答案。 所以基本上我试图理解为什么使用 PrintWriter 将文本行写入文件显然会每 2 行跳过第一行。
这是我自己用的方法class:
public class IO_Utilities {
public static void Write(String outputName){
PrintWriter outputStream = null;
try {
outputStream = new PrintWriter(outputName);
} catch (FileNotFoundException e) {
System.out.println(e.toString());
System.exit(0);
}
System.out.println("Write your text:");
Scanner user = new Scanner(System.in);
while(!user.nextLine().equals("stop")) {
String line = user.nextLine();
outputStream.println(line);
}
outputStream.close();
user.close();
System.out.println("File has been written.");
}
当我从 main 调用它时:
IO_Utilities.Write("output.txt");
并写:
first line
second line
third line
stop
stop
输出的文字实际上是:
second line
stop
我确定问题出在 while 循环上,因为如果我手动输入行,它会正常工作,但我不明白为什么它会像现在这样。
while(!user.nextLine().equals("stop")) {
String line = user.nextLine();
outputStream.println(line);
}
您在循环中重复了 user.nextLine();
,因此行与您比较为“停止”的行不同。
将该部分重写为:
String line = user.nextLine();
while( !line.equals("stop")) {
outputStream.println(line);
line = user.nextLine();
}