2016-10-30 3 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のインスタンスです。ここでは、CartoStringと呼んでいます。

CartoStringメソッドを定義しましたか?いいえ。そのため、デフォルトのtoStringが呼び出されます。

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

あなたの全体を:あなたはCarの人間が読める文字列表現をしたい場合は、単にtoStringをオーバーライドし、この

[email protected]

のような出力を参照してください理由です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

はいこれが動作します。どうもありがとう !! –

関連する問題