代码:
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无法应用于给定类型。需要双倍, 没有发现任何争论。
我正在尝试修改price
类中的WineCase
字段。这是双倍的。
答案 0 :(得分:2)
setPrice()
是一种方法。您似乎还有一个名为getPrice()
的方法,这两个方法都可能对应于对象中名为price
的实例变量。
如果price
是private
,那么您就这样致电getPrice()
:
wineCase1.getPrice();
这会返回double
(假设price
的类型为double)。
同样,如果price
为private
,那么您需要将其设置为:
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...
要使用此方法并对wineCase1
应用10%的折扣,您可以这样做:
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);
答案 1 :(得分:1)
如果价格字段是双重类型,那么您只需执行以下操作。
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;
}
您不能为方法分配任何值,但方法可以返回值。