2017-04-09 12 views
0

私はJavaを初めて使い、燃料使用量を記録する簡単なプログラムを作成しようとしています。私はこれが良い運動だと思った。 "package.Animal @" が、ここで私は私のコンソールで得るものです:: 私のオブジェクトは印刷されていません

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でこのコードは次のようなものをプリントアウトします

> 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

ハッシュコードを出力するデフォルトのtoString()を参照していますか?その場合、toString()メソッドをオーバーライドして ""を返すので、その行に何も表示されません。 – Ryan

+0

@HF toString()メソッドを削除して参照してください。また、 'main()'で 'Car myCar = new Car(" Audi ");を移動します。それをインスタンス変数にする。 –

答えて

3

私は自分自身のJavaウィザードではないが、私はここ、この小さな男のを想像:

public String toString() { 
    return ""; 
} 

のprintln thingamabobはおそらくあなたが作った()メソッドをToStringメソッドオブジェクトではなく、空の文字列を返す呼び出しますデフォルト。

はそのを取り除くか、それを変更し、あなたはデフォルトのtoString()メソッドを呼び出すためのJavaを希望する場合は、あなたがあなた自身のtoString()メソッドを定義するべきではありません黄金

0

でなければなりません。あなたのtoString()メソッドは空の文字列を返すので、空の文字列がコンソールに出力されます。

1

オブジェクトが印刷されます。 toStringメソッドをオーバーライドして、空の文字列を返しただけです。

関連する問題