从BufferedReader读取String数组

时间:2013-01-24 18:28:32

标签: java sockets 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) {}

4 个答案:

答案 0 :(得分:3)

当你打印一个数组时,它首先调用toString()。数组的默认toString()打印type @ hashCode,这通常是无用的。

你想要的是

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

答案 1 :(得分:2)

r.println(object)调用object.toString()来了解要打印的内容。数组stringTo()方法只返回该值([L表示您正在处理数组)。

如果要打印所有数组,请循环播放。

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

当然,您必须找到一个有效的分隔符(一个不会出现在字符串中的分隔符)。

答案 2 :(得分:1)

您应该考虑使用ObjectOutputStream / ObjectInputStream代替。然后你可以直接发送各种Serializable对象(包括数组)。

答案 3 :(得分:1)

您正在尝试打印字符串数组,而不是数组中的每个字符串。在服务器上尝试这样的事情:

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

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

            } catch (Exception ex) {

            }