0

コード:

public void checkHitDiscount(WineCase wineCase1)
{
    if(hits%10==0)
    {   
        wineCase1.setPrice()=0.9*wineCase1.getPrice;
        System.out.println("Congratulations! You qualify for 10% discount.");
    } else 
        System.out.println("You do not qualify for discount.");
}

ここで得られるエラーは次のとおりです。

メソッド setPrice は特定の型には適用できません。double が必要ですが、引数が見つかりません。

クラスのpriceフィールドを変更しようとしています。WineCaseダブルです。

4

2 に答える 2

2

setPrice()方法です。と呼ばれるメソッドもあるようですがgetPrice()、これらはおそらくオブジェクト内で呼び出されるインスタンス変数に対応していpriceます。

の場合priceprivate、次のように呼び出しますgetPrice()

wineCase1.getPrice();

これは a を返します(が double 型であるとdouble仮定します)。price

また、 が の場合priceprivate、次のように設定する必要があります。

wineCase1.setPrice(somePrice);

上記の例で、price現在の 90% に設定する場合、適切な構文は次のようになります。

wineCase1.setPrice(0.9*wineCase1.getPrice());

publicまたは、このクラスのメソッドを次のように記述することもできます。

public void discountBy(double disc) {
    price *= 1.0 - disc;
}
// or like this:
public void discountTo(double disc) {
    price *= disc;
}
// or both...

この方法を使用して に 10% 割引を適用するには、次のwineCase1ようにします。

wineCase1.discountBy(0.1);
// or like this:
wineCase1.discountTo(0.9);

その後、引き続き使用します:

wineCase1.getPrice();

オブジェクトからプライベート変数 を取得しpriceます。


最後に、これが最善の解決策になる可能性があるため、次のメソッドを追加します。

public double getPriceDiscountedBy(double disc) {
    return price*(1.0-disc);
}

public double getPriceDiscountedTo(double disc) {
    return price*disc;
}

これらのメソッドを使用すると、アイテムの元の価格を変更せずに割引価格の値を取得できます。これらは を取得するのと同じ場所で呼び出されますgetPriceが、割引引数を使用して、返された価格のみを変更します。例えば:

double discountedPriceOutsideOfObject = wineCase1.getPriceDiscountedTo(0.9);
//or like this:
double discountedPriceOutsideOfObject = wineCase1.getPriceDiscountedBy(0.1);
于 2013-11-13T18:10:47.867 に答える
1

価格フィールドが double 型の場合は、以下のようにするだけです。

public void checkHitDiscount(WineCase wineCase1)
{
    if(hits%10==0)
    {   
        wineCase1.setPrice(0.9*wineCase1.getPrice());
        System.out.println("Congratulations! You qualify for 10% discount.");
    } else 
        System.out.println("You do not qualify for discount.");
}

また、WineCase.java では、setPrice は次のようにする必要があります。

pubilc void setPrice(double price) {
  this.price = price;
}

メソッドに値を代入することはできませんが、メソッドは値を返すことができます。

于 2013-11-13T18:55:01.003 に答える