2012-12-01 33 views
-1

为什么我的代码在最后一次输出时返回空值? 我就应该返回此:自动MERCEDES C来自车库:TOP SERVICE(X2) Actualy,全力输出应该是: 自动福特S-MAX从车库:SPEEDY 自动FORD FOCUS从车库:SPEEDY 自动MERCEDES C从车库:TOP SERVICE 从车库汽车MERCEDES C:TOP服务请问我的Java代码有什么问题?

我知道问题是在我的构造的某个地方,构造我的对象的副本。 谢谢

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

您还没有实现在Auto类的副本大蟒的权利。

public Auto(Auto a){ 
    this.hashCode(); 
} 

截至目前,它只是调用hashCode()方法,但不初始化类属性:

请如下更正:

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

一旦完成,然后将导致Auto kopie = new Auto(auto);声明转换成新的类实例kopie,其实例从auto实例复制而来。

+0

谢谢你帮助我。下次我会更加关心我的头衔。欢呼声 –

+0

@JBNizet从构造函数中删除了null检查。 –