-1

我已经了解了 BufferedReader 和 BufferedWriter,所以我决定为命令行创建一个小型文本处理器(意思是没有接口,只在 cmd/终端中)。它向用户询问文档名称(然后将创建一个文件),然后用户可以输入句子。每次用户按下“输入”按钮时,都会在文件中输入文本并创建新行,然后允许用户输入更多内容。最后,它会显示一条消息,说明文件已创建。现在,我遇到了一个问题,用户将无法停止输入数据和创建文件的过程,因为尽管没有输入任何内容或退出关键字,程序仍会继续创建新行(我在代码中声明是为了退出程序.) 这是我的原始代码:

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 块替换为 while 块:

int counter = 0;
    while(counter != 1)
    {
        line = in.readLine();
        writer.write(line);
        if(line.equals("quit()"))
        {
            ++counter;
        }
        else {writer.newLine();}
    }

我现在有一个关于这个的问题,为什么我不能使用 do-while 语句而不是 while,即使该程序可以工作似乎是合乎逻辑的?谢谢您阅读此篇!!!!

PS我也想知道我是否可以对这个或任何其他创建此类程序的方式进行小的改进。感谢您提供反馈!

4

1 回答 1

0

可能是被问到最多的错误。

可以在这里找到答案:如何比较 Java 中的字符串?

while(line != "quit()");

一定是

while(!line.equals("quit()"));
于 2013-07-20T18:19:32.013 回答