所以我想弄清楚如何打印我的数组列表的实际内容,而不是内存位置
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class hw2redo
{
public static void main(String args[]) throws FileNotFoundException
{
//Scan file for data
GeometricObject g = null;
BufferedReader file = new BufferedReader(new FileReader("file.txt"));
Scanner diskScanner = new Scanner(file);
//Create dynamic array list
ArrayList<GeometricObject> list = new ArrayList<GeometricObject>();
//Scan data and add data to list
while(diskScanner.hasNext())
{
String geolist = diskScanner.nextLine();
g = recreateObject(geolist);
list.add(g);
}
showObjects(list);
}
private static GeometricObject recreateObject(String data)
{
GeometricObject object = new GeometricObject(data);
return object;
}
private static void showObjects(ArrayList<GeometricObject> list)
{
for(GeometricObject o : list)
System.out.println(o);
}
}
class GeometricObject
{
public GeometricObject(String data) {
// TODO Auto-generated constructor stub
}
}
所以这是我的代码。我尝试过使用toString()和Arrays.toString(),但它们似乎不适用于arraylist(我试过,因为它们在我的常规数组上工作)。
我收到的输出是
// Output
GeometricObject@55f96302
GeometricObject@3d4eac69
GeometricObject@42a57993
GeometricObject@75b84c92
GeometricObject@6bc7c054
GeometricObject@232204a1
这很好,因为我很接近,我只需要弄清楚如何打印实际内容。
我在file.txt中寻找的内容是
Circle,green,false,4.0
Circle,blue,false,2.0
Circle,blue,true,7.0
Rectangle,orange,true,10.0,6.0
Rectangle,green,false,5.0,11.0
Rectangle,red,true,14.0,12.0
非常感谢任何帮助。谢谢!
答案 0 :(得分:5)
您的班级需要toString
方法:
class GeometricObject
{
private String data;
public GeometricObject(String data) {
this.data = data;
}
@Override
public String toString() {
return data;
}
}
没有覆盖,您正在使用Object.toString()
。正如您所观察到的,对象的toString
打印出对象的类名和哈希码。
答案 1 :(得分:0)
System.out.println(o);
当你调用System.out.println时,那显然会调用你的Object的toString()方法。由于您没有toString()
,因此它会调用默认实现。 Ovveride toString()方法可以根据需要进行打印。
public class GeometricObject {
....
@Override
public String toString() {
// return string representation of your object.
}
}
首先:What is the best standard style for a toString implementation?