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 ブロックを while ブロックに置き換えるものです。
int counter = 0;
while(counter != 1)
{
line = in.readLine();
writer.write(line);
if(line.equals("quit()"))
{
++counter;
}
else {writer.newLine();}
}
これについて質問があります。プログラムが機能することが論理的に思えても、while の代わりに do-while ステートメントを使用できないのはなぜですか? これを読んでくれてありがとう!!!!
PS また、このタイプのプログラムを作成するために、これまたは他の方法に小さな改善をもたらすことができるかどうかも疑問に思います。フィードバックをお寄せいただきありがとうございます。