【问题标题】:Reading a String array from a BufferedReader从 BufferedReader 读取字符串数组
【发布时间】:2013-01-08 14:44:39
【问题描述】:

我正在实现一个客户端服务器应用程序。我正在从服务器发送一个字符串数组,现在我想从我的客户端代码中读取该字符串数组中的内容。我该怎么做;

当我从客户端打印值时,我得到的输出类似于[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) {}

【问题讨论】:

    标签: java sockets bufferedreader


    【解决方案1】:

    当你打印一个数组时,它首先调用它的 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);
      }
      

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

      【讨论】:

        【解决方案3】:

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

            try {
                        PrintWriter r= (PrintWriter) i.next();
        
                        String[] s={"f","ff"};
                        for(String sElement : s)
                        {
                            r.println(sElement);
                            r.flush();
                        }
        
                    } catch (Exception ex) {
        
                    }
        

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-01-02
            • 2014-10-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-03-20
            相关资源
            最近更新 更多