2016-09-17 74 views
3

我有一個本地服務器類,它向客戶端類發送兩條字符串消息(「第一條消息」,「第二條消息」)。 在客戶端類中,我想將它們放入來自BufferedReader的ArrayList 代碼中,然後進行打印。從bufferedReader到arraylist的字符串

void go() throws IOException { 
    Socket socket = new Socket("127.0.0.1",4242); 
    InputStreamReader streamReader = new InputStreamReader(socket.getInputStream()); 
    BufferedReader reader = new BufferedReader(streamReader); 
    ArrayList <String> list = new ArrayList<String>(); 
    while (reader.readLine() != null) { 
     list.add(reader.readLine()); 
    } 
    System.out.println(list); 
} 

但這一切,我得到的 - 是一個行「空」 這有什麼錯呢? 我會任何幫助

+0

給出將不打印 「空」 的結果,是有史以來的代碼。其他事情正在發生。 –

回答

1

ciprianoss是正確的,但也是在環

while (reader.readLine() != null) { 
    list.add(reader.readLine()); 
} 

您從文件兩次

讀一旦在一段時間,再次添加之前。

list.add(reader.readLine()); 

爲ciprianoss建​​議

String line; 
while((line = reader.readLine()) != null) 
{ 
    list.add(line); 
{ 
0

一旦你這樣做.readLine()將不再是在緩衝區非常感激,改變你的while循環:

String line = null; 
while((line = reader.readLine()) != null) { 
    list.add(line); 
}