2012-08-07 97 views
0

例如,在Java中,從控制檯讀取輸入你會寫是這樣的:當代碼一步一步執行時,流如何工作?

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class ReadConsoleSystem { 
    public static void main(String[] args) { 

    System.out.println("Enter something here : "); 

    try{ 
     BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in)); 
     String s = bufferRead.readLine(); 

     System.out.println(s); 
    } 
    catch(IOException e) 
    { 
     e.printStackTrace(); 
    } 

    } 
} 

所以在線路String s = bufferRead.readLine(),代碼只是等待輸入進來,然後進入下一個但是如果你想看看連續的字符串流,試圖解析出它的一部分,例如,讀取一系列Twitter狀態並只保存那些有「奧巴馬」這個詞的東西?

我不明白代碼如何在處理來自流的輸入的同時逐行執行,然後突然檢測何時給出輸入並保存它。

+2

沒有什麼特別神祕的 - 「readLine」會阻止,直到您按下回車鍵。 – 2012-08-07 15:32:24

+0

「塊」是什麼意思? – 2012-08-07 15:38:11

+0

它(暫時)停止執行程序。 – 2012-08-07 16:26:56

回答

0

寫入的代碼只能設置爲從系統的輸入(即控制檯)的一行輸入中讀取。它的設置使得當你執行readLine時,它將從輸入中讀取一行。你必須輸入一些東西(「你好」)並按回車,它會採取這一點,並把它放在字符串中。如果你想解析的東西,手動做後記

if(s.contains("Obama")) { 
    //blah 
} 
0

控制檯是行緩衝。這意味着整個行只有一次到達Java進程,所以它看不到你寫字符或回退空間來刪除​​它們等。

我懷疑你不需要看它是如何做到這一點的。也許你可以描述你想要解決什麼問題?

1

bufferRead.readLine();不會返回到調用代碼,直到用戶按下返回鍵。