如果我们将对象id作为String值
,是否有办法获取数组对象的值//假设这是一个真实的对象id值,
PC向我发送数组,然后我从该PC获取此ID作为String(使用套接字)。我想通过使用该对象名称来获取数组的内容。
`
Random random = new Random();
for ( int i = 0 ; i<5 ; i++ ) {
weatherDetails[i] = random.nextDouble() * 100;
}
out.println(weatherDetails);
`
while (true) {
input = in.readLine();
if (input == null) {
return;
}
System.out.println("Input value weather->" + input);//[D@514713
}
答案 0 :(得分:1)
您似乎误解了自己创造的情况。
使用时
out.println(someObject);
打印出的内容是someObject.toString
的结果。
toString
的默认实现是对象的类名称@
的串联,以及对象的hashCode()
方法的结果。< / p>
由于数组是一个不会覆盖toString
方法的对象,因此您获得了数组的类名(对于类型为double[]
的数组,这将是{ {1}}),后跟[D
,后跟在该JVM中分配的任何哈希码。
也就是说,印刷品根本不包含有用的信息。
为了传输实际数据,您应该循环数组并以您能够阅读的某种形式打印其元素。
由于你没有这样做,当你试图读取这一行时,你得到的只是无意义的字符串表示。这是不对象ID。它的不是任何类型的引用。它只是数组类型和哈希码的无意义连接。
如果您使用了类似
的内容@
然后,您将在输出中获得实际数字,格式为
out.println(Arrays.toString(weatherDetails));
然后,您可以通过移除括号,分隔逗号并在每个结果元素上使用[40.5,31.972,17.60,5.3]
来阅读另一方。
请注意,这只是一个选项。您可以使用其他方法实际循环并以其他方式放置数据。例如,将元素数放在第一行中,并在以下每行中放置一个元素。然后在阅读方面,读取第一行,将其解析为整数,然后您知道要读取多少行,读取每一行并解析它。或者您可以使用Double.parseDouble()
或DataOutputStream
。
请勿尝试直接打印数组。你没有得到任何有用的信息。