2016-12-15 4 views
1

я сделал следующее:Как читать входные данные из STDIO как целая строка в Java

1) Создан BufferedReader;

2) Читать построчно из stdio и приложил его к StringBuilder

br = new BufferedReader(new InputStreamReader(System.in)); 

StringBuilder everything = new StringBuilder(); 
String line; 

while((line = br.readLine()) != null) { 
    everything.append(line); 
} 
System.out.println(everything.toString()); 

Но я не могу выйти из цикла. Когда я проходил, например, такой ввод и нажимал ENTER Я все еще в цикле.

aut Caesar aut nihil 
aut aut 
de mortuis aut bene aut nihil 

Как я могу решить эту проблему? Или, может быть, я должен использовать другой метод, считая от stdio?

+0

'stdin' открыт поток таким образом есть возможность того, что на другом конце некоторое содержание производится и будет посылать, поэтому приложение должно ждать его каждый раз, когда вы звоните' ReadLine() '. Чтобы решить эту проблему, вы можете использовать некоторую последовательность остановки, чтобы решить, следует ли выйти из цикла. Такая последовательность может быть как слово «конец», «стоп», или, может быть, ни слова, просто пустая строка. Таким образом, ваше решение может выглядеть как 'while ((line = br.readLine())! = Null &&! Line.equals (" stop ")) {...}' – Pshemo

+0

Возможно, вы сможете создать 'EOF' нажатие ''. Зависит полностью от консоли, которую вы используете для запуска программы. – AJNeufeld

+0

Почему вы не используете класс Scanner для чтения пользовательского ввода, это намного проще, чем этот подход. –

ответ

-1

Этот код является всего лишь образцом примера для класса Scanner, он просто считывает вход String от пользователя и сохраняет его в строке.

Scanner sc=new Scanner(System.in); 
    System.out.println("enter data"); 

    while(sc.hasNextLine()) 
    { 
     String str=sc.nextLine(); 
     System.out.println(str); 
    } 
+0

Если я передам строки, о которых я упоминал, он будет печатать только первую строку. = (Но я хочу, чтобы все строки были напечатаны. –

+0

Я отредактировал код, просто проверьте, не работает ли он –

+0

Этот код не выходит из цикла. = ( –

Смежные вопросы