我正在创建一个会打印出位置坐标的程序。当它将它打印到文件时,它看起来像这样:
Car id distance #spots
java.awt.Point[x=1,y=1]
java.awt.Point[x=2,y=0]
java.awt.Point[x=1,y=0]
car0 java.awt.Point[x=0,y=0] java.awt.Point[x=1,y=0] 1
car1 java.awt.Point[x=2,y=0] java.awt.Point[x=2,y=0] 2
我试图摆脱java.awt.Point显示,所以它只显示坐标。
继承我的代码: public void saveGrid(File name)抛出FileNotFoundException {
ArrayList<Car> cars = getCars();
ArrayList<ParkingSpot> spots = getSpots();
PrintWriter fileWriter;
try {
fileWriter = new PrintWriter(name);
fileWriter.println("hi");
fileWriter.println("\n\nCar id distance #spots\n");
fileWriter.println(getPartyLocation());
for(ParkingSpot spot: spots){
fileWriter.println(spot.getLocation());
fileWriter.println("");
}
for (Car car: cars) {
fileWriter.println(car.getId() + " " + car.getStart() + " " + car.getLocation() + " " + car.getNumSpotsTried());
fileWriter.println("");
}
fileWriter.close();
} catch (FileNotFoundException e) {
System.err.println("FileWriting error:" + e);
e.printStackTrace();
}
答案 0 :(得分:3)
当您向字符串添加car.getLocation()
时,您正在添加Point
个对象。它隐式转换为toString()
的字符串。 toString
的{{1}}方法是:
java.awt.Point
基本上是:
public String toString() {
return getClass().getName() + "[x=" + x + ",y=" + y + "]";
}
您可以执行以下操作,而不是依赖此默认行为:
public String toString() {
return "java.awt.Point[x=" + x + ",y=" + y + "]";
}
答案 1 :(得分:1)
正在打印java.awt.Point
内容,因为您的gridSave方法隐式调用java.awt.Point.toString()
......这就是它产生的内容。 (典型的toString()
旨在生成调试输出,并且在该上下文中包含类名。)
你的可能性是:
Point
方法编写您自己的toString()
课程,该方法以您希望的格式输出位置。java.awt.Point
的子类,该子类将覆盖toString()
方法。Point.toString()
方法。相反,请编写String formatLocation(Point)
方法来格式化Point
您希望的方式,并在gridSave
方法中使用它。