2013-01-24 195 views
2

我正在實現客戶端服務器應用程序。從服務器我發送一個字符串數組,現在我想從我的客戶端代碼讀取該字符串數組中的什麼。我怎樣才能做到這一點;從BufferedReader中讀取字符串數組

當我打印從客戶價值我得到的輸出類似[Ljava.lang.String;@120d10

服務器:

try { 
        PrintWriter r= (PrintWriter) i.next(); 

        String[] s={"f","ff"}; 
        r.println(s); 

        r.flush(); 
       } catch (Exception ex) { 

       } 

客戶端:

try { 
        while ((somestring= r.readLine()) != null) { 
         //When i print it i get something like [Ljava.lang.String;@120d10 


        } 
       } catch (Exception ex) {} 

回答

1

您正在嘗試打印字符串數組,而不是數組中的每個字符串。在服務器上嘗試這樣的事情:

try { 
       PrintWriter r= (PrintWriter) i.next(); 

       String[] s={"f","ff"}; 
       for(String sElement : s) 
       { 
        r.println(sElement); 
        r.flush(); 
       } 

      } catch (Exception ex) { 

      } 
3

當你打印一個數組,它調用toString ()首先。數組的默認toString()會打印出通常無用的type @ hashCode

您打算什麼像

String[] arr={"f","ff"}; 
for(String s: arr) 
    r.println(s); 
2

r.println(object)要求object.toString()知道要打印什麼。數組stringTo()方法只返回該值([L表示您正在處理數組)。

如果要打印所有數組,請將其循環。

for(String str : s) { 
    r.println(str + delimiter); 
} 

當然,你將不得不找到一個有效的分隔符(一個不會出現在你的字符串中)。