2012-12-01 2 views
-1

내 코드가 마지막 출력에서 ​​null 값을 반환하는 이유는 무엇입니까? 나는 그것을이를 반환하도록되어 : 자동 MERCEDES C 주차장에서 : TOP 서비스 (X2) Actualy는 전체 출력해야한다 : 자동 포드 S-MAX 주차장에서 : SPEEDY 자동차 포드 포커스 주차장에서 : SPEEDY 자동 MERCEDES 차고에서 C : 최고 서비스 차고에서 자동 MERCEDES C : 최고 서비스자바 코드에 문제가 있습니까?

나는 나의 문제의 사본이 나의 목표물의 사본을 conctruct하는 나의 생성자의 어떤 곳이다라는 것을 알고있다. 당신은 Auto 클래스에 복사 뱀의 권리를 구현하지 않은 당신에게

public class Garage { 

    //final String naam; 
    String naam; 

    public Garage (String n){ 
     this.naam = n; 
     } 
    public String getName(){ 
     return naam; 
    } 

    public void setName(String sn){ 
     this.naam = sn; 
    } 

    public String toString(){ 
     return ""+getName(); 

    } 

} 

public class Auto { 

    //static final String brandName; 
    String brandName; 
    Garage garage; 

    public Auto(String mn){ 
     this.brandName = mn; 

    } 
    public Auto(Auto a){ 
     this.hashCode(); 
    } 
    public Auto(String mn, Garage g){ 
     //this(mn); 
     this.brandName = mn; 
     this.garage = g; 
    } 

    public String getBranName(){ 
     return brandName; 
    } 
    public Garage getGarage(){ 
     return garage; 
    } 

    public void setGarage(Garage g){ 
     this.garage = g; 
    } 

    public String toString(){ 
     return "Auto "+getBranName()+" from Garage: "+getGarage(); 
    } 

} 


public class GarageTester { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 

     Auto auto = new Auto("FORD S-MAX"); 
     Garage garage = new Garage("SPEEDY"); 
     auto.setGarage(garage); 

     System.out.println(auto); 

     auto = new Auto("FORD FOCUS",garage); 

     System.out.println(auto); 

     auto = new Auto("MERCEDES C", new Garage("TOP SERVICE")); 

     System.out.println(auto); 

     Auto kopie = new Auto(auto); 

     System.out.println(kopie); 

    } 

} 
+0

내 질문에 품질이 좋지 않다면 –

+1

제목을 좀 더 설명적인 것으로 편집 할 수 있다면 좋을 것입니다. :) – Mysticial

+0

내 제목을 편집 할 수있는 방법을 찾고 있습니다. –

답변

1

감사드립니다.

지금 현재로
public Auto(Auto a){ 
    this.hashCode(); 
} 

, 그것은 단지 hashCode() 메소드를 호출하지만 클래스를 초기화하지 않는 것은 속성 :

아래를 수정하십시오 : 일단 다음 Auto kopie = new Auto(auto); 문이됩니다 수행

public Auto(Auto a){ 
    this.brandName = a.brandName; 
    this.garage = a.garage; 
} 

을 인스턴스에서 복사 된 새로운 클래스 인스턴스 kopie으로

+0

나를 도와 주셔서 감사합니다. 다음 번에는 내 타이틀에 더주의를 기울일거야. 건배 –

+0

@JBNizet 생성자에서 Null 검사를 제거했습니다. –