我正在尝试将int
数组的值打印到本地文件。但是,我似乎无法找到以标准格式(1,2,3
)而不是堆地址打印整数的方法:([I@1befab0
)
我的代码片段如下:
PrintWriter pr = new PrintWriter("file");
for (int i=0; i<views.length ; i++){
pr.println(Arrays.toString(views));
}
pr.close();
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("No such file exists.");
}
}
我可能做错了什么?
答案 0 :(得分:5)
您每次尝试打印整个阵列。试试这个:
(我做了很少的改动。但是你抓住Exception
的事实通常是个坏主意,你通常应该在finally
块中关闭作者。)
try
{
PrintWriter pr = new PrintWriter("file");
for (int i=0; i<views.length ; i++)
{
pr.println(views[i]);
}
pr.close();
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("No such file exists.");
}
答案 1 :(得分:2)
是数组也许是多维数组?如果是,请使用java.util.Arrays.deepToString
。
PrintWriter pr = new PrintWriter("file");
for (int i=0; i<views.length ; i++){
pr.println(Arrays.deepToString(views));
}
pr.close();
答案 2 :(得分:1)
您是否正在写入文件以保留数组内容?如果是,serialize the object (array in this case)。有一个关于如何反序列化对象的链接,以便您可以检索链接页面上的值。
答案 3 :(得分:0)
数组上的toString()方法给出了“[I @ 1befab0”字符串 所以你需要遍历数组。
您可以将问题分成两部分:
用于构建String(您可以在debug中检查值)
StringBuilder b = new StringBuilder();
for (Object o : views) {
b.append(String.valueOf(o));
}
用于将String写入文件
...
答案 4 :(得分:0)
打印出数组时,它会调用数组的toString()函数。所以,你看到的是“views”数组的参考值,因为数组中存在很多值。
Jon指出,你实际上需要打印数组的值。当然,这假设数组包含通过toString很好地格式化的对象(或者数组包含基元)。
答案 5 :(得分:0)
这里的大多数答案都集中在这样一个事实上:您需要遍历数组而不是一次性打印所有数组。但是Arrays.toString(...)应该和Arrays.asList(...)。toString()一样返回,顺便说一下,它应该是[1,2,3]形式。
因此,我建议,正如马特在答案中所做的那样,views
实际上是一个双嵌套数组。
在这种情况下,固定代码为:
try {
PrintWriter pr = new PrintWriter("file");
for (int i=0; i<views.length ; i++){
pr.println(Arrays.toString(views[i]));
}
pr.close();
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("No such file exists.");
}
}
答案 6 :(得分:0)
PrintWriter pr = new PrintWriter("file");
for (int i=0; i<views.length ; i++){
pr.println("" + views[i]);
}
pr.close();
它没有那么容易。