2017-02-02 102 views
1

我一直在試圖弄清楚這一點,現在我已經通過各種問題進行了搜索,但我不認爲我會更接近。不同類別的打印toString

我有一個超級車輛,給出了車輛的各種細節。然後我有我的車類繼承自車輛。

我想從我的Car類打印toString,它覆蓋了Vehicle類。

基本上我想打印出每輛車的信息。

這裏是我的主要

public static void main(String []args) 

    { 

     Car Ford = new Car(Red, 4, true); 

     //Ford = Ford.; Tried various things here to no avail, kept getting nullfalse in output 

     Car Honda = new Car(Blue, 4, false); 


     System.out.println(Ford.vehicleDetails); 

     System.out.println("Honda"); 

    } 

} 

這是我的車類

public class Vehicle 

{ 

// Variables 

private String vehicleColour; 

private int numberOfWheels; 

String vehicleDetails; 

// Constructor 

public Vehicle(String vehicleColour, int numberOfWheels) 

{ 

} 

// Getters 

public String getVehicleColour() 

{ 
    return vehicleColour; 
} 

public int getNumberOfWheels() 

{ 
    return numberOfWheels; 
} 



// Setters 

public void setVehicleColour(String vehicleColour) 

{ 
    this.vehicleColour = vehicleColour; 
} 


public void setNumberOfWheels(int numberOfWheels) 

{ 
    this.numberOfWheels = numberOfWheels; 
} 


// Constructor 

public Vehicle() 

{ 

} 


// toString method super 

public String toString() { 

    String vehicleDetails = (getVehicleColour() + "" + getNumberOfWheels()); 

    return vehicleDetails; 

} 

} 

這是我的車類

public class Car extends Vehicle 

{ 

    // Variables 

    private boolean convertible; 

    Car vehicleDetails; 

    // Getter 

    public boolean getConvertible() 

    { 
     return convertible; 
    } 

    // Setter 

    public void setConvertible(boolean convertible) 

    { 
     this.convertible = convertible; 
    } 

    // Constructor 

    public Car(String vehicleColour, int numberOfWheels, boolean convertible) { 


    } 


     // toString method override 

     @Override 
     public String toString() { 

     return super.toString() + convertible; 

     } 

    } 

我希望我的輸出是這樣的」福特是紅色,有車輪和是可兌換「,分別來自車輛和汽車類的粗體文本。

如何讓粗體文本顯示在輸出中?現在我只是得到默認值,如null,0和false。

我很欣賞任何輸入,我知道我可能在做一些非常愚蠢的事情,這真的很明顯,但我看不到它。

謝謝。

+0

首先,你給我們的代碼將不會編譯。在'Vehicle'類中,'vehicleColour'被定義爲一個String,但'getVehicleColour()'試圖返回一個double。 –

+0

對不起,我已經編輯過這篇文章。 – Keeron

+0

@凱倫你可以請,如果我的答案爲您服務的權利? –

回答

1

我希望我的輸出是類似「福特是紅色的,有4個車輪並且是敞篷」

爲了您的上述要求簡單的解決方案:

System.out.println("The Ford is "+ Ford.toString()); 

如果您打算從Ford.toString得到整個輸出,然後在創建Ford對象時,您還需要通過汽車名稱!如下所示,並在它的構造函數中進行必要的更改!

Car Ford = new Car("Ford","Red", 4, true); 

但是在CarVehicle類的構造製成,但沒有值由他們分配給本地變量!因此.toString()沒有得到任何顯示!

需作修改爲:

在主

System.out.println("The Ford is "+ Ford.toString()); 

汽車

//change in the constructor 
public Car(String vehicleColour, int numberOfWheels, boolean convertible) { 

    setNumberOfWheels(numberOfWheels); 
    setVehicleColour(vehicleColour); 
    setConvertible(convertible); 

} 

我想從我的汽車類打印的toString,它覆蓋了Vehicle類。

//change in toString() 


    @Override 
    public String toString() { 
     if(convertible){ 
      return super.toString() +"and is a convertible" ; 
     }else{ 
      return super.toString() +"and is not a convertible" ; 
     } 


    } 

在車輛類別

//change the constructor 
public Vehicle(String vehicleColour, int numberOfWheels) 

{ 
     setNumberOfWheels(this.numberOfWheels); 
     setVehicleColour(this.vehicleColour); 

} 

基本上我想打印出大約每節車廂的信息。

//change the toString() 
public String toString() { 

    String vehicleDetails = (getVehicleColour() + ", has " +getNumberOfWheels()+" wheels"); 

    return vehicleDetails; 

} 
+0

感謝您提供非常詳細和翔實的回覆,我非常感謝!我甚至從來沒有想過在構造類中設置值,我認爲我可以從字符串中獲取值,但很明顯,因爲我獲得了默認值,所以我知道某些東西是不正確的。再次感謝! – Keeron

+0

@Keeron我很樂意幫助你!不要忘記給予upvote:頁 –

0

我希望我的輸出類似「福特是紅色的,有4個輪子 並且是敞篷」,分別 類從汽車及汽車未來的粗體字。

如果你想包含這些單詞,那麼你必須告訴它包含這些單詞到你的toString()中。

例如,如果您想要它打印「有四個輪子」,那麼您不能只做getNumberOfWheels()。否則,你只能得到一個4.你必須做一些像"has " + getNumberOfWheels() + " wheels"。如果你不告訴它包括所有的單詞,它不會包含它們。

+0

謝謝DM,我可以管理那個部分,我只是想讓人們知道我想要的最終結果。現在我得到類似「福特** ** **,有** 00 **輪子,並且是**假**」。 – Keeron

+1

雖然您已經創建了帶參數的構造函數,但這些構造函數似乎沒有任何代碼來實際將局部變量設置爲這些參數。如果你將'numberOfWheels'傳遞給構造函數,那麼這個構造函數應該可以設置'this.numberOfWheels'(或者調用你所做的'super'構造函數。) –

+0

謝謝DM,我沒有意識到我需要在構造函數中設置值,事後看來,這很明顯。我確實說過我可能在做一些愚蠢的事情!感謝所有的幫助。 – Keeron