我已经了解了BufferedReader和BufferedWriter,所以我决定为命令行创建一个小文本处理器(意思是没有接口,只在cmd / terminal中)。它向用户询问文档名称(然后将创建文件)然后用户可以键入句子。每次用户按下“输入”按钮,文本就会输入到文件中,然后创建新行,然后允许用户输入更多内容。最后,它将显示一条消息,说明文件已创建。 现在,我遇到了一个问题,用户无法停止输入数据和创建文件的过程,因为尽管没有输入任何内容或退出关键字,程序仍然创建新行(我在代码中声明为了退出程序。) 这是我的原始代码:
import java.io.*;
class TextProcessor
{
public static void main(String[] args)
{
try
{
System.out.println("Please enter name of the file");
BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); //User input
String file = in.readLine();
BufferedWriter writer = new BufferedWriter(new FileWriter(file)); //Creating file as well as instance for inputting text to the file.
System.out.println("Enter text");
String line = "";
do
{
line = ins.readLine();
System.out.println(line);
writer.write(line);
System.out.println("Second " + line);
writer.newLine();
}
while(line != "quit()");
//while(line != null);
in.close();
writer.close();
System.out.println("Text is created with entered text");
}
catch(IOException e)
{
System.out.println("Error occured");
}
}
}
然而,我找到了一个解决方案,用一个替换do-while块:
int counter = 0;
while(counter != 1)
{
line = in.readLine();
writer.write(line);
if(line.equals("quit()"))
{
++counter;
}
else {writer.newLine();}
}
我现在对此有一个疑问,为什么我不能使用do-while语句而不是while,即使程序看起来合乎逻辑?感谢您阅读!!!!
P.S。我也想知道我是否可以通过这种或任何其他方式对这种类型的程序进行小改进。谢谢你提供反馈!
答案 0 :(得分:0)
可能是错误询问的最多。
答案可以在这里找到:How do I compare strings in Java?
while(line != "quit()");
必须
while(!line.equals("quit()"));