2013-05-11 1 views
-1

위치 좌표를 바깥쪽으로 인쇄 할 프로그램을 만들고 있습니다. 이 파일에 그것을 밖으로 인쇄 할 때, 그것은 다음과 같습니다 : 나는 나타나지에서 java.awt.Point의 제거하려고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 

그래서 그것은 단지 좌표를 보여줍니다.

는 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()으로 문자열로 변환됩니다. java.awt.PointtoString 방법은 다음과 같습니다

public String toString() { 
    return getClass().getName() + "[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 물건은 다음과 같습니다

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

대신이 기본 동작에 의존, 당신은이 다음과 같은 작업을 수행 할 수 gridSave 메서드가 암시 적으로 java.awt.Point.toString()을 호출하기 때문에 인쇄되고 있습니다. (전형적인 toString()은 디버그 출력을 생성하도록 설계 클래스 명을 포함하면 해당 상황에 맞는 적절한입니다.)

귀하의 가능성은 다음과 같습니다에 위치를 출력하는 toString() 방법으로 자신의 Point 클래스를 작성

  • 원하는 형식.
  • toString() 메서드를 재정의하는 java.awt.Point의 하위 클래스를 만듭니다.
  • Point.toString() 방법을 사용하지 마십시오. 대신 Point 형식을 지정하고 gridSave 방법에 사용하려면 String formatLocation(Point) 방법을 작성하십시오.