我正在实现客户端服务器应用程序。从服务器我发送一个字符串数组,现在我想从我的客户端代码中读取该字符串数组中的什么。我该怎么做;
当我从客户端打印值时,我得到类似[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) {}
答案 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) {
}