2013-05-11 2 views
-1

Я создаю программу, которая отобразит координаты местоположения. Когда она выводит его в файл, он выглядит следующим образом:FileWriter, удаляющий 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 показ так это только показывает координаты.

Heres мой код: общественного недействительными saveGrid (имя файла) бросает 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(); 
    } 

ответ

3

При добавлении car.getLocation() в строку, вы добавляете Point объект. Он неявно преобразован в строку с toString(). Метод toString для java.awt.Point является:

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()); 
1

java.awt.Point материал поскольку ваш метод gridSave неявно вызывает java.awt.Point.toString() ... и это то, что он производит. (Типичный toString() предназначен для получения отладочной информации, и в том числе имени класса уместно в этом контексте.)

Ваших возможностей:

  • Написать свой собственный Point класс с toString() методом, который выводит местоположение в формат, который вы хотите.
  • Создайте подкласс java.awt.Point, который переопределяет метод toString().
  • Не используйте метод Point.toString(). Вместо этого напишите метод String formatLocation(Point) для форматирования Point, как вы хотите, и используйте его в своем методе gridSave.