2013-06-07 2 views
4

Почему этот код не работает, если я не раскомментирую строку System.out.print(" ");?Не удается передать экземпляр System.out должным образом FilterOutputStream

3 случая:

  • System.out.print(" "); после outprint.write(var); Результаты в: h e l l o w o r l
  • System.out.print(" "); до outprint.write(var); результатов в: h e l l o w o r l d
  • без System.out.print(" "); ничего не отображается

Подводя итог, я передать экземпляр System.out (который является PrintStream) к атрибуту out объекта FilterOutputStream (который принимает OutputStream).


import java.io.FilterOutputStream; 
import java.io.IOException; 

public class CodeCesar { 

    public static void main(String[] args) {   
     FilterOutputStream outputstream = new FilterOutputStream(System.out); 
     String line = "hello world"; 
     char[] lst_char = line.toCharArray(); 

     for (char var : lst_char) { 
      try { 
       outputstream.write(var); 
       System.out.print(" "); <--------- THIS LINE 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 
+0

Нужно ли вам промывать outpustream после того, как вы напишете на него? – LiverpoolFTW

ответ

7

Это потому, что вы должны вручную вызвать outputstream.flush(); (вместо System.out.print())

3

Что бы вы добавили в потоке буферизации, но не покраснела. Без линии попробуйте очистить выходной поток.

try { 
    for (char var : lst_char) {   
     outputstream.write(var);  
    } 
    outputstream.flush(); //flush it once you are done writing 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
0

Это скорректированный код для вас. используйте промывку()

public class CodeCesar {  
     FilterOutputStream outputstream = new FilterOutputStream(System.out); 
     String line = "hello world"; 
     char[] lst_char = line.toCharArray(); 
     for (char var : lst_char) { 
      try { 
       System.out.print(" "); 
       outputstream.write(var); 
       outputstream.flush(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 
Смежные вопросы