簡體   English   中英

FileWriter刪除Java.awt.Point

[英]FileWriter removing the Java.awt.Point

我正在創建一個程序,它將覆蓋位置的坐標。 當將其打印到文件中時,如下所示:

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)throws 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();
    }

當您將car.getLocation()添加到字符串中時,您將添加一個Point對象。 使用toString()將其隱式轉換為字符串。 java.awt.PointtoString方法是:

public String toString() {
    return getClass().getName() + "[x=" + x + ",y=" + y + "]";
}

本質上是:

public String toString() {
    return "java.awt.Point[x=" + x + ",y=" + y + "]";
}

不必依賴此默認行為,可以執行以下操作:

// Get the car's location.
Point loc = car.getLocation();

// Create a string representation: [x,y]
String locString = "[" + loc.x + "," + loc.y + "]";

// Add the line with all the other stuff
fileWriter.println(car.getId() + " " + car.getStart() + " " + locString + " "
  + car.getNumSpotsTried());

正在打印java.awt.Point東西是因為您的gridSave方法隱式調用了java.awt.Point.toString() ……這就是它產生的結果。 (典型的toString()設計為產生調試輸出,並且在該上下文中包括類名是適當的。)

您的可能性是:

  • 使用toString()方法編寫您自己的Point類,該方法以所需的格式輸出位置。
  • 創建java.awt.Point的子類,該子類重寫toString()方法。
  • 不要使用Point.toString()方法。 而是編寫一個String formatLocation(Point)方法來格式化Point格式,然后在gridSave方法中使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM