2016-12-21 5 views
0

メソッドの結果をToStringに表示するにはどうしたらいいですか? ここまでは私のコードです "updatedPrice"の結果を得るために何を書くべきか分かりません。 b.t.wメソッドの結果をtoStringに設定するには

 public double updatedPrice(double price){ 
     this.price=price; 

     double ChangePriceRate, ChangePriceAmount, finalPrice; 

     if(name=="Bamba"){ 
      ChangePriceRate = 0.15; 
     }else{ 
      ChangePriceRate = 0.05; 
     } 

     ChangePriceAmount = price * ChangePriceRate; 

     if(name=="Bamba"){ 
      finalPrice = price + ChangePriceAmount; 
     }else{ 

      finalPrice = price - ChangePriceAmount; 
    } 




    } 

    public String toString(){ 

     return "Name of the Snack: "+name+ "\n"+ 
       "Name of the Company: "+comp+ "\n"+ 
       "Price before discount: "+this.price+ "\n"+ 
       "Price after discount: "+  **finalPrice?**  + "\n"; 
    } 

は - 。私は、これまでの総begginer本当に新しいです** ありがとう。

+2

コードはコンパイルされません。 'updatedPrice(double price)'メソッドにreturn文がありません – rafid059

+0

1) "return finalPrice;"を使用します。あなたのupdatePriceメソッドで。 toString()を呼び出してupdatePriceメソッドを呼び出す 2)updatePriceをvoidに変更し、finalメソッドをローカルメソッドではなくインスタンス変数にする –

答えて

2

ただ、そこにあなたのメソッドを呼び出します。

public String toString(){ 
    return "Name of the Snack: " + name + "\n" + 
      "Name of the Company: " + comp + "\n" + 
      "Price before discount: " + this.price+ "\n" + 
      "Price after discount: " + updatedPrice(this.price) + "\n"; 
} 

注意:
一般的に、私はtoString()方法でメソッドを呼び出すAGAINST助言します。 クラスの状態をtoString()の中に表示するだけで、既存のフィールドの値のみを表示する方が良いでしょう。


これは、あなたがfinalPriceというフィールドを導入し、そこに値を格納すべき結果を意味します。

public static class MyClass { 

    private String name; 
    private String comp; 
    private double price; 
    private double finalPrice; // <-- Field for final price 

    [...]  

    public void updatePrice(double price) { 
     this.price = price; 

     double changePriceRate; 
     double changePriceAmount; 

     if ("Bamba".equals(this.name)) { // <-- Use equals()! 
     changePriceRate = 0.15; 
     } else { 
     changePriceRate = 0.05; 
     } 

     changePriceAmount = price * changePriceRate; 

     if ("Bamba".equals(this.name)) { // <-- Use equals()! 
     finalPrice = price + changePriceAmount; 
     } else { 
     finalPrice = price - changePriceAmount; 
     } 
    } 

    public String toString() { 
     return "Name of the Snack: " + name + "\n" + 
      "Name of the Company: " + comp + "\n" + 
      "Price before discount: " + price + "\n" + 
      "Price after discount: " + finalPrice + "\n"; 
    } 
    } 

ボーナスポイント:
あなたは、文字列の内容を比較したい場合は代わりにequals()を使用し、文字列を比較するため==を使用しないことをした後、あなたがtoString()メソッドを使用して、この値を表示することができます !

+1

+1 toString()でメソッドを呼び出さず、オブジェクトの状態を参照する - ちょうど私が答えようとしていたもの:-) –

0

ストアfinalPrice変数を動作するプロパティfinalPriceを作成し、

this.finalPrice = /*the price*/ 

とあなたのコードに値を割り当てる:

double finalPrice; 

    public double updatedPrice(double price){ 
     this.price=price; 

     double ChangePriceRate, ChangePriceAmount; 

     if(name=="Bamba"){ 
      ChangePriceRate = 0.15; 
     }else{ 
      ChangePriceRate = 0.05; 
     } 

     ChangePriceAmount = price * ChangePriceRate; 

     if(name=="Bamba"){ 
      finalPrice = price + ChangePriceAmount; 
     }else{ 

      finalPrice = price - ChangePriceAmount; 
     } 
     return finalPrice; 
    } 

    public String toString(){ 

     return "Name of the Snack: "+name+ "\n"+ 
       "Name of the Company: "+comp+ "\n"+ 
       "Price before discount: "+this.price+ "\n"+ 
       "Price after discount: "+  finalPrice  + "\n"; 
    } 

と別のヒント:名前変数は常に先頭に小文字を使用していますので、クラス名と変数名を区別するのに役立ちます。

関連する問題