2016-10-30 82 views
0

我有这段代码如下:如果我打电话给我这样的对象声明,我得到这个。没有得到所需的输出

输出如下:

[email protected]

[email protected]

public class TrafficQueue { 
    private Car[] carArray; 
    private int numberOfcarsInQueue; 
    private int f = 0; 

    public TrafficQueue(int numberOfcarsInQueue){ 
     carArray = new Car[numberOfcarsInQueue]; 


    } 
    private static class Car { 
     private String make; 
     private String colour; 

     public Car(String make, String colour) { 
      this.make = make; 
      this.colour = colour; 
     } 

     public String getMake(){ 

      return make; 
     } 



    } ; 


    public void add(Car car){ 
     carArray[numberOfcarsInQueue] = car; 
     numberOfcarsInQueue ++; 

    } 
    public String toString() 
    { 
     String result = ""; 

     for (int scan=0; scan < numberOfcarsInQueue; scan++) 
     result = result + carArray[scan].toString() + "\n"; 

     return result; 
    } 
    public static void main(String[] args) { 
     // TODO code application logic here 


     TrafficQueue queueLane1 = new TrafficQueue(10); 
     Car carT = new Car("Toyota", "Red"); 
     Car carE = new Car ("Jaguar","Red"); 
     queueLane1.add(carT); 
     queueLane1.add(carE); 

     System.out.println(""+queueLane1.toString()); 
     System.out.println(queueLane1); 

     System.out.println("Number of Cars in Queue"+ "=" + queueLane1.getNumberOfCarsInQueue()); 
    } 

} 

我使用java.util.arrays.toString而是试图徒劳无功。我究竟做错了什么?

+0

你的问题是什么?更具体地说明你想达到什么目标? –

回答

0

你得到的输出由TrafficQueue对象即这种方法在调用toString生产:

public String toString() { 
    String result = ""; 

    for (int scan = 0; scan < numberOfcarsInQueue; scan++) 
     result = result + carArray[scan].toString() + "\n"; 

    return result; 
} 

让我们来看看上面的方法。

以上方法调用carArray[scan].toString()carArray[scan]Car的一个实例。你在这里做的实质上是调用toStringCar

您是否定义了CartoString方法?不。这就是为什么默认toString被调用。这就是为什么你看到这样

trafficqueue.Tr[email protected]

输出。如果你想的Car人类可读的字符串表示,只是覆盖toString

public String toString() { 
    return colour + " " + getMake(); 
} 

你的整个Car类应如下所示:

private static class Car { 
    private String make; 
    private String colour; 

    public Car(String make, String colour) { 
     this.make = make; 
     this.colour = colour; 
    } 

    public String getMake() { 

     return make; 
    } 

    @Override 
    public String toString() { 
     return colour + " " + getMake(); 
    } 
} 
+0

是的,这是有效的。非常感谢 !! –