Java - Jak se zbavit podmínky, aby byl kód matematicky správně?
Dobrý den,
Nevím, jak to mám přesně formulovat. Tohle je spíš matematický úkol
Řekněme, že mám tento kód
private void calculate(int number) {
int a = 10;
int b = 20;
int c = 30;
int d;
if (c == 0) {
d = a * b;
} else {
d = c - a * b;
}
}
Parametr metody se má buď použít nebo ne. Proto ji volám buď s číslem nebo s 0.
calculate(100);
calculate(0);
Přijde mně však, že ta podmínka je tam zcela nadbytečná.
Jenže a * b = 200.
A kdybych podmínku smazal a jednoduše tam nechal c - a * b, bylo by to (v případě 0) -200, což je špatně.
Nevíte, prosím Vás, jak to matematicky upravit, aby to vycházelo? Jestli je to teda možné?
PS. Jak už jsem napsal výše, 0 zadávám, pokud parametr nechci použít, takže nemusí to být nutně 0 (i když sám nevím, co jiného bych použil).
A Calculate (50) je dobre?
Kde uvnitr funkce pracujes s predanym parametrem?
Aha, sorry. Psal jsem to narychlo přímo tady v prohlížeči. Ano, správně má být int c = number.
A jak jsem víceméně řekl, parametr se má použít pouze, pokud je to číslo kromě 0. Proto je jediná použitelná právě 0, jenže s ní to nevychází.
Pokud to bez té podmínky nefunguje, tak evidentně nadbytečná není.
Nadbytečná je asi nevhodné slovo. Spíš zbytečně to zesložiťuje, u tak jednoduchého kódu.
Tak pokud ta metoda má v podstatě dvě různá chování, tak holt tam ta podmínka být musí.
Případně můžeš uvažovat o přetížení té metody.
Omlouvám se, napsal jsem to špatně a vůbec si to neuvědomil. Hodnota, kterou předávám metodě, bude vždy kladná. Avšak, zadané hodnoty jsou špatně, protože d bude vždycky taky kladné, takže skutečně lze metodě předat 0 a z proměnné d udělat absolutní hodnotu.
Nějak mi uniká, o co ti jde. Buď chceš výsledek (a x b) nebo - (a x b) nezávisle na parametru (pak podmínku nepotřebuješ a napíšeš tam to, co chceš dostat). Nebo má výsledek záviset na parametru ... pak ho musíš otestovat a zvolit konkrétní výsledek.
Jak už jsem napsal výše, udělal jsem chybu, c má být c = number;. Nicméně, jak už jsem jednou tady odpověděl, napsal jsem nevhodný příklad, protože number bude vždy kladný a d taky, takže stačí použít jenom absolutní hodnotu.
Nekde ta podminka byt musi, kdyz se meni logika na zaklade hodnoty na vstupu. Pokud se ti nelibi if, tak to udelej pres ternarni operator...
Nicmene je to jen jiny zapis tehoz…
Ano, tento zápis je jednodušší. Nicméně, tenhle příklad jsem napsal špatně a vůbec si to neuvědomil. Hodnota, kterou předávám metodě, bude vždy kladná, ale proměnná d bude taky vždy kladná, proto stačí pouze udělat absolutní hodnotu
I přesto děkuji. Tento zápis podmínky je mnohem přehlednější.