2013-07-20 3 views
-1

Я узнал о BufferedReader, а также BufferedWriter, поэтому решил создать небольшой текстовый процессор для командной строки (что означает без интерфейса, только в cmd/terminal). Он запрашивает у пользователя имя документа (который затем создаст файл), а затем пользователь может ввести предложения. Каждый раз, когда пользователь нажимает кнопку «Ввод», текст вводится в файл, а новая строка создается, а затем позволяет пользователю вводить больше. В конце он отобразит сообщение о создании файла. СЕЙЧАС, я столкнулся с проблемой, когда пользователь не смог остановить процесс ввода данных и создания файла, потому что программа продолжала создавать новые строки, несмотря на то, что ничего не вводила или не вышла из ключевого слова (которое я указал в коде, чтобы выйти из . программа) Вот мой исходный код:Небольшая проблема ввода в программе в java

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"); 
    } 
} 

}

Однако, я нашел решение этой проблемы, которое заменяющий делать-то время как блок с в то время как один:

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

I имеем aq Теперь об этом можно сказать, почему я не могу использовать инструкцию do-while вместо этого, даже если логично, что программа будет работать? Спасибо за чтение этого!!!!

P.S. Я также задаюсь вопросом, могу ли я внести небольшие улучшения в этот или любой другой способ создания этого типа программы. Спасибо, если вы дадите отзыв!

ответ

0

Возможно, ошибка была задана в большинстве случаев.

Ответ можно найти здесь: How do I compare strings in Java?

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

должен быть

while(!line.equals("quit()")); 
+0

Downvoted почему ?? – jlordo

+0

Почему это было приостановлено? Я имею в виду, что это фактически решает проблему. +1 от меня, хотя. –

+0

Thanx за +1, но я удивлен, что у меня 2 очка. Кроме того, это был конкретный вопрос, и я понятия не имел, что существует разница между equals() и ==. Плюс я тоже хотел найти обратную связь для этого кода! – pavelexpertov