第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

是否可以將算術(shù)運(yùn)算符傳遞給Java中的方法?

是否可以將算術(shù)運(yùn)算符傳遞給Java中的方法?

慕村225694 2019-10-30 14:31:21
現(xiàn)在,我將不得不編寫(xiě)一個(gè)如下所示的方法:public String Calculate(String operator, double operand1, double operand2){        if (operator.equals("+"))        {            return String.valueOf(operand1 + operand2);        }        else if (operator.equals("-"))        {            return String.valueOf(operand1 - operand2);        }        else if (operator.equals("*"))        {            return String.valueOf(operand1 * operand2);        }        else        {            return "error...";        }}如果我可以像這樣編寫(xiě)代碼,那就太好了:public String Calculate(String Operator, Double Operand1, Double Operand2){       return String.valueOf(Operand1 Operator Operand2);}因此運(yùn)算符將替換算術(shù)運(yùn)算符(+,-,*,/ ...)有誰(shuí)知道在Java中是否可以進(jìn)行類(lèi)似的操作?
查看完整描述

3 回答

?
SMILET

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

不,您無(wú)法使用Java做到這一點(diǎn)。編譯器需要知道您的操作員在做什么。相反,您可以做的是一個(gè)枚舉:


public enum Operator

{

    ADDITION("+") {

        @Override public double apply(double x1, double x2) {

            return x1 + x2;

        }

    },

    SUBTRACTION("-") {

        @Override public double apply(double x1, double x2) {

            return x1 - x2;

        }

    };

    // You'd include other operators too...


    private final String text;


    private Operator(String text) {

        this.text = text;

    }


    // Yes, enums *can* have abstract methods. This code compiles...

    public abstract double apply(double x1, double x2);


    @Override public String toString() {

        return text;

    }

}

然后,您可以編寫(xiě)如下方法:


public String calculate(Operator op, double x1, double x2)

{

    return String.valueOf(op.apply(x1, x2));

}

并這樣稱(chēng)呼它:


String foo = calculate(Operator.ADDITION, 3.5, 2);

// Or just

String bar = String.valueOf(Operator.ADDITION.apply(3.5, 2));


查看完整回答
反對(duì) 回復(fù) 2019-10-30
?
慕碼人8056858

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊

Java中的方法參數(shù)必須是表達(dá)式。運(yùn)算符本身不是表達(dá)式。在Java中這是不可能的。

當(dāng)然,您可以傳遞enum表示這些運(yùn)算符的對(duì)象(可能是常量),并采取相應(yīng)的行動(dòng),但您不能將運(yùn)算符本身作為參數(shù)傳遞。


其他提示

由于您只是開(kāi)始使用Java,因此最好盡早掌握這些信息以簡(jiǎn)化您的未來(lái)開(kāi)發(fā)。

  • 方法的名字開(kāi)始與小寫(xiě):calculate代替Calculate

  • 變量名稱(chēng)開(kāi)頭小寫(xiě):operator代替Operator

  • Double是引用類(lèi)型,原始類(lèi)型的框double

    • 有效的Java 2nd Edition,第49項(xiàng):優(yōu)先于基元類(lèi)型而不是盒裝基元

  • 不要return "error..."。代替,throw new IllegalArgumentException("Invalid operator");


查看完整回答
反對(duì) 回復(fù) 2019-10-30
  • 3 回答
  • 0 關(guān)注
  • 642 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)