亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java 未定義的構造函數

Java 未定義的構造函數

www說 2023-09-20 17:29:26
我編寫了一個小程序,其中包含三個類:Carpet、Calculator和Floor。通過使用 main 中的計算器類,將調用地毯類與地板類相乘。但是,我發現當在計算器類中使用 double 作為返回類型時,我遇到了構造函數未定義的錯誤。我發現是計算器類的問題,我有一個方法getTotalCost()可以返回地板和地毯的成本。為什么我在 main.c 中調用時不能僅將兩個對象作為計算器中的參數傳遞?我在計算器類中使用了 double 的原始返回類型。請幫我重寫計算器類,并向我解釋為什么我不能使用原始類型類,而必須在地板和地毯的計算器字段聲明中使用類名。為什么必須將地板和地毯的類名傳遞到構造函數中才能構建對象?如果您使用類名聲明兩個實例字段,那么修復方法是什么getTotalCost(),那么錯誤肯定會是這樣的:- The operator * is undefined for the argument     type(s) Floor, Carpet- Occurrence of 'carpet'- 1 changed line嘗試使用創建的類但收到錯誤。Carpet carpet = new Carpet(3.5);Floor floor = new Floor(2.75, 4.0);在計算器的參數中傳遞地板和地毯。//未定義構造函數 Calculator Calculator = new Calculator(floor,carpet);
查看完整描述

3 回答

?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

由于您的Calculator類只有默認構造函數(沒有任何參數的構造函數)和一個僅接受 的構造函數double, double,因此您無法創建Calculator提供Carpet實例和Floor實例的實例。

所以你有兩個選擇:

  1. 將建筑面積和地毯成本傳遞給當前建造者。

    Calculator calculator = new Calculator(floor.getArea(), carpet.getCost());

  2. 更改構造函數以接受一個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());

    }

}


查看完整回答
反對 回復 2023-09-20
?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

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


查看完整回答
反對 回復 2023-09-20
?
回首憶惘然

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();

}


查看完整回答
反對 回復 2023-09-20
  • 3 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號