2017-04-09 22 views
0

我是Java新手,試圖製作一個簡單的程序來記錄燃料使用情況。我認爲這將是一個很好的練習。我的對象未被打印

public class MyJavaProgram { 

    static Car myCar = new Car("Audi"); 

    public static void main(String[] args) { 

     System.out.println(myCar); 

     myCar.refuel(100); 
     myCar.drive(50); 
     myCar.drive(20); 

    } 

} 

通常用Java這個代碼將打印出像: 「package.Animal @」,但這裏是我在控制檯中看到:

> A new Audi has been created. 
> 
> Car refilled with 100 liter fuel. 
> Car drove 50 km. 
> Car drove 20 km. 

我的車類:

public class Car { 

    String type; 
    int fuel = 0; 
    int driven; 

    public Car(String type) { 
     this.type = type; 
     System.out.println("A new "+type+" has been created."); 
    } 

    public void refuel(int amount) { 
     fuel += amount; 
     System.out.println("Car refilled with "+amount+ " liter fuel."); 
    } 

    public void drive(int amount) { 
     fuel -= amount; 
     driven += amount; 
     System.out.println("Car drove "+amount+" km."); 
    } 

    public String toString() { 
     return ""; 
    } 

} 

我看不到我的代碼的哪一部分導致了這個錯誤。

+0

@HF你打算怎麼打印我沒有得到'package.Animal @' –

+0

你是否指默認的打印出hashcode的toString()?如果是這樣,因爲你重寫了toString()方法返回「」,那麼沒有任何東西會出現在那行 – Ryan

+0

@HF只需刪除toString()方法即可。還可以在'main()'側面移動'Car myCar = new Car(「Audi」);''。使其成爲實例變量。 –

回答

3

我不是一個Java嚮導自己,但是我在這裏想到了這個小傢伙:

public String toString() { 
    return ""; 
} 

中的println thingamabob可能會調用對象的toString你已經取得回報一個空字符串,而不是()方法默認。

擺脫的那個或改變它,你應該是金色的

0

如果您想Java來調用默認的toString()方法時,你不應該定義自己的toString()方法。您的toString()方法返回一個空字符串,因此將一個空字符串打印到控制檯。

1

您的對象已打印。只是你重寫了toString方法並返回一個空字符串。