2016-10-25 7 views
0

いくつかの助けが必要です、それは計算を計算し、望ましい値を返す必要があります。代わりにゼロを返します。ここの最初のコードは計算を実行しません。実行時エラー

public class TipCalc { 

    int satisfactionRating; 
    double tip; 

    public TipCalc(int satisfactionRating) { 

    } 

    public double calcTip(double bill) { 

     if (satisfactionRating==1) { 
      tip = bill*0.20; 
     } 
     if (satisfactionRating==2) { 
      tip = bill*0.15; 
     } 
     if (satisfactionRating==3) { 
      tip = bill*0.10; 
     } 
     return tip; 
    } 
} 

/////////////////////////////////////// TESTER CLASS ///////// /////////////////////////

import java.util.Scanner; 

public class tiptester { 
    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     System.out.println("Please put in the total cost of your meal "); 
     double mealPrice = input.nextFloat(); 
     System.out.println("Please input your satisfaction rating "); 
     int satisfaction = input.nextInt(); 
     TipCalc meal = new TipCalc(satisfaction); 
     double tipz = meal.calcTip(mealPrice); 
     double totalMeal = tipz+mealPrice; 
     System.out.println("The tip is " + tipz); 
     System.out.println("The cost of the meal is " + mealPrice); 
     System.out.println("The total cost is " + totalMeal); 
    } 
} 
+1

何の入力を与えていますか? –

+0

注: 'int satisfactionRating'と' double tip'にはメンバ変数を使用しないでください。メソッドパラメータとローカル変数としてそれぞれ宣言します。 –

+1

'TipCalc'クラスのコンストラクタに渡している' satisfactionRating'に値を代入していません。この '公共のTipCalcを試してください(int satisfactionRating){ this.satisfactionRating = satisfactionRating; } ' –

答えて

0

あなたは以下のようにTipCalcのコンストラクタでsatisfactionRatingを割り当てる必要があり、

public TipCalc(int satisfactionRating) 
{ 
    this.satisfactionRating = satisfactionRating; 
} 

現在、satisfactionRatingの値が割り当てられていないため、既定値は0になり、if条件のいずれもがcalcTip()メソッドで満たされず、0が返されます。

0

メンバ変数satisfactionRatingは初期化されていません。あなたは、あなたがTesterクラスからコンストラクタで渡している値をsatisfactionRatingに割り当てる必要があります。

public TipCalc(int satisfactionRating) 
{ 
    this.satisfactionRating = satisfactionRating 
} 

これが機能するはずです。

0

@Jerin @Khuziあなたは、コンストラクタでsatisfactionRatingを初期化し、以下のコードを見ていない語ったように、一般的なクラスは次のようになります。あなたは

public class TipCalc { 
private int satisfactionRating; //should be private, should be accessed using getter and setter methods 
private double tip;    //should be private, should be accessed using getter and setter methods 

public TipCalc(int satisfactionRating) { 
    this.satisfactionRating = satisfactionRating; //This was your actual problem. 
} 

public double calcTip(double bill) { 
    if (satisfactionRating == 1) { 
     tip = bill * 0.20; 
    } 
    if (satisfactionRating == 2) { 
     tip = bill * 0.15; 
    } 
    if (satisfactionRating == 3) { 
     tip = bill * 0.10; 
    } 
    return tip; 
} 

public int getSatisfactionRating() { 
    return satisfactionRating; 
} 

public void setSatisfactionRating(int satisfactionRating) { 
    this.satisfactionRating = satisfactionRating; 
} 

public double getTip() { 
    return tip; 
} 

public void setTip(double tip) { 
    this.tip = tip; 
} 
} 
関連する問題