簡體   English   中英

從BufferedReader讀取String數組

[英]Reading a String array from a 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) {}

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

你的意圖是什么樣的

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

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

如果要打印所有數組,請對其進行循環。

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

當然,您將必須找到一個有效的定界符(一個不在字符串內的定界符)。

您應該考慮改為使用ObjectOutputStream / ObjectInputStream 然后,您可以直接發送各種可序列化的對象(包括數組)。

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

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

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

            } catch (Exception ex) {

            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM