2017-08-23 38 views
2

this問題,我該如何停止閱讀輸入?我的程序只是繼續運行,要求更多的輸入。在沒有EOF的java中停止讀取輸入

public static void main(String[] args) throws Exception { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String src; 

    while ((src = br.readLine()) != null) { 
     String trgt = br.readLine(); 
     //do something 
     } 
    } 

回答

1

這樣,

public static void main(String[] args) throws Exception { 
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
String src; 

while ((src = br.readLine()) != null) { 
    StringTokenizer st=new StringTokenizer(src); 
    if(!st.hasMoreTokens()) break; 
    //YOUR LOGIC GOES HERE 
    } 
} 
0

查找實例END的特殊字符串。當trgt等於「END」時,則可以中斷循環。

+0

但網上法官不會接受這個答案 輸入由法官提供的,我不能改變輸入格式。 –

+0

那麼法官會提供什麼來表明沒有更多的投入?我會認爲這是一個EOF,不是嗎? @ utkarsh691-sopho – Sweeper

0

正如@ihsan kocak所說的,你可以尋找一個像EXIT或QUIT這樣的字符串。當你發現字符串只是打破循環。

0

設置一個特定的詞作爲閱讀斷路器。例如stop。如果用戶輸入stop,則讀取過程將結束。下面是這個過程的實現示例:

public static void main(String[] args) throws Exception { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String src; 

    while ((src = br.readLine()) != null && !(src.equals("stop"))) { 
     String trgt = src; 
     //do something 
    } 
} 
+0

嵌套方法?你從輸入流中讀取三次... – Tom

+0

你是對的。我會改變實施。 –

+0

您仍然複製了您的方法和前兩個變量,並且仍然是第二次讀取。這兩件事都是錯誤的。 – Tom