3 回答

TA貢獻2036條經驗 獲得超8個贊
由于您的Calculator
類只有默認構造函數(沒有任何參數的構造函數)和一個僅接受 的構造函數double, double
,因此您無法創建Calculator
提供Carpet
實例和Floor
實例的實例。
所以你有兩個選擇:
將建筑面積和地毯成本傳遞給當前建造者。
Calculator calculator = new Calculator(floor.getArea(), carpet.getCost());
更改構造函數以接受一個
Carpet
實例和一個Floor
實例(那么您的Calculator
類邏輯也應該修改)
public class Calculator {
private Floor floor;
private Carpet carpet;
public Calculator() {
}
public Calculator(Floor floor, Carpet carpet) {
this.carpet=carpet;
this.floor=floor;
}
public double getTotalCost()
{
return (this.floor.getArea() * this.carpet.getCost());
}
}

TA貢獻1828條經驗 獲得超6個贊
你不能乘以物體。看起來,你想在地板上鋪上地毯,然后得到……什么東西?這不是這樣的,想得更深一點——事實是你真的想將地毯的平方(更具體地說是平方米的數量)乘以 1 平方米的成本(貨幣數量)。當您理解這一點時,您應該可以輕松地更正您的代碼,因此地板地毯字段并能夠根據地板面積和地毯成本計算總成本

TA貢獻1847條經驗 獲得超11個贊
Calculator 類的參數是(double, double)這樣的,因此它不會接受 Floor 和 Carpet 對象。您可以像這樣調用構造函數:
Calculator calc = new Calculator(carpet.getCost(), floor.getCost());
或者將構造函數更改為以下內容:
Calculator (Floor f, Carpet c) {
this.floor = f.getCost();
this.carpet = c.getCost();
}
添加回答
舉報