我使用2个类和一堆方法在数组中存储内容然后将其写入文件。我写了一些东西到文件后,而不是var double, 这是我的代码:
public void storeArray(Quest1 a, Quest2 b, String filename) throws FileNotFoundException{
PrintWriter k = new PrintWriter(filename);
for(int i = 0; i < a.getDays(); i++)
{
k.println(b.storeArr(a));
}
k.close();
System.out.println("Written.");
}
Quest 1是一个类,Quest 2是一个类,String文件名刚刚通过。 完成所有这些并将Quest3对象放在我的主菜单中。 我运行程序,输入我在Quest 2类中放入数组的所有值等,然后将它们写入文件。
我打开该文件以检查它是否有效,我得到了这个:
[D@264532ba
如何修复此问题以获取文件中的双变量?
答案 0 :(得分:3)
打印Arrays.toString
而不是打印出数组(调用从toString
继承的Object
):
k.println(Arrays.toString(b.storeArr(a)));
或者如果您想要一些自定义格式,可以使用Apache Commons中的StringUtils.join
。或者,如果您不能使用任何依赖项,也许只需编写一个循环。
您输出的内容是数组的toString
,它的类型([D
)+ @
+其哈希码(264532ba
)。
答案 1 :(得分:1)
数组使用toString()
的默认实现,以及为什么数组的输出是:
[D@264532ba
您可以通过两种方式打印数组的内容:
Arrays.toString(array)
。让我解释下面的代码:
double[] array = new double[10];
System.out.println(array);
array
是一个对象,因此您正在调用println(Object)
PrintStream
Object的toString()
,它在内部调用传递的对象上的System.out
。数组的toString()
类似于hashCode()
&#39; s Class.getName()
JavaDoc:
toString()
所以输出结果如下:
getClass().getName() + "@" + Integer.toHexString(hashCode());
其中[D@756a7c99
代表数组的深度,[
代表D
。 double
是从{{3}}返回的十六进制数值。
另请阅读{{3}}。
答案 2 :(得分:0)
如果storeArr
返回数组,则可以使用Arrays.toString(b.storeArr(a))
答案 3 :(得分:0)
这里:
k.println(b.storeArr(a));
您正在打印b.storeArr(a)
这是一个数组对象。
这样做:
PrintWriter k = new PrintWriter(filename);
for(int i = 0; i < a.getDays(); i++)
{
b.storeArr(a);
k.println(Arrays.toString(b));
}