2017-04-09 62 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方法并返回一个空字符串。