Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Java - Použití parametru metody jako matematického znaku

Dobrý den,

Vytvořil jsem tenhle příklad

public class MathematicalOperatorInParameter {

    public static void main(String[] args) {
        System.out.println(addition_or_subtraction(100, 50, true));
        System.out.println(addition_or_subtraction(100, 50, false));
    }

    public static int addition_or_subtraction(int number, int number2, boolean addition) {
        if (addition) {
            return number + number2;
        } else {
            return number - number2;
        }

    }
}

Jde o to, že mně přijde zbytečné používat podmínku jenom kvůli operátoru. V tomhle případě to asi nevadí, ale pokud bude výpočet čísel mnohem složitější, tak bude nepřehledné to tam psát dvakrát.

Proto se chci, prosím Vás, zeptat, jestli je možné použít parametr jako operátor?

Děkuji

Předmět Autor Datum
Nelze.
MaSo 07.04.2021 16:43
MaSo
Myslel jsem něco jako napsat to jako řetězec a následně převést na operátor? Navíc, nevím jestli by…
MichalDM 07.04.2021 16:47
MichalDM
Pokud myslis eval String (treba "5+4"), tak to v Java lze treba pres zavolani JS engine.... https:/…
MaSo 07.04.2021 16:50
MaSo
A taky je potřeba dodat B - tedy že výkon půjde do kytek.
Wikan 07.04.2021 16:51
Wikan
To uz davno nemusi byt pravda...:-) (GraalVM)
MaSo 07.04.2021 16:54
MaSo
Promiňte, ale jak to použiju? Java 15 to očividně má, ale přesto mně NetBeans nenabízí žádný import,…
MichalDM 07.04.2021 17:39
MichalDM
Prave v JDK15 byl Nashorn Engine z JDK odstranen. Coz jsem ani nevedel, ze bylo v planu...:-) Nicme…
MaSo 07.04.2021 17:57
MaSo
To nejde. A ani mě nenapadá důvod, proč by to jít mělo. To co řešíš, se určitě dá vyřešit mnohem lép…
Wikan 07.04.2021 16:51
Wikan
Binárny operátor si môžeš poslať ako parameter: BinaryOperator<T> binaryOperator; Prípadne, keď sú t…
moose 08.04.2021 07:51
moose
Díky, ale nejlepší asi bude způsob uvedený níže ohledně násobení +1 a -1. poslední
MichalDM 08.04.2021 16:52
MichalDM
Bez podmínky stačí pouze funkce addition a buď vložit -number2 anebo jako třetí argument zadat +1 či…
hynajs 08.04.2021 10:28
hynajs
Díky. Souhlasím, to bude asi nejlepší způsob.
MichalDM 08.04.2021 16:51
MichalDM

Binárny operátor si môžeš poslať ako parameter: BinaryOperator<T> binaryOperator;
Prípadne, keď sú to len čísla typu int, tak rovno IntBinaryOperator.

Napr.:
final IntBinaryOperator addition = (a, b) -> a + b;
final IntBinaryOperator subtraction = (a, b) -> a - b;

V metóde potom len aplikuješ: return binaryOperator.apply(number, number2);

Zpět do poradny Odpovědět na původní otázku Nahoru