Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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).

Předmět Autor Datum
A Calculate (50) je dobre? Kde uvnitr funkce pracujes s predanym parametrem?
Jan Fiala 26.12.2021 00:25
Jan Fiala
Aha, sorry. Psal jsem to narychlo přímo tady v prohlížeči. Ano, správně má být int c = number. A ja…
MichalDM 26.12.2021 00:43
MichalDM
Pokud to bez té podmínky nefunguje, tak evidentně nadbytečná není.
Wikan 26.12.2021 06:14
Wikan
Nadbytečná je asi nevhodné slovo. Spíš zbytečně to zesložiťuje, u tak jednoduchého kódu.
MichalDM 26.12.2021 12:30
MichalDM
Tak pokud ta metoda má v podstatě dvě různá chování, tak holt tam ta podmínka být musí. Případně můž…
Wikan 26.12.2021 14:40
Wikan
Omlouvám se, napsal jsem to špatně a vůbec si to neuvědomil. Hodnota, kterou předávám metodě, bude v…
MichalDM 29.12.2021 23:04
MichalDM
Nějak mi uniká, o co ti jde. Buď chceš výsledek (a x b) nebo - (a x b) nezávisle na parametru (pak p…
dsa 26.12.2021 10:39
dsa
Jak už jsem napsal výše, udělal jsem chybu, c má být c = number;. Nicméně, jak už jsem jednou tady o… poslední
MichalDM 29.12.2021 23:10
MichalDM
Nekde ta podminka byt musi, kdyz se meni logika na zaklade hodnoty na vstupu. Pokud se ti nelibi if,…
MaSo 26.12.2021 12:46
MaSo
Ano, tento zápis je jednodušší. Nicméně, tenhle příklad jsem napsal špatně a vůbec si to neuvědomil.…
MichalDM 29.12.2021 23:08
MichalDM

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.

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

d = Math.abs(c - a * b);

I přesto děkuji. Tento zápis podmínky je mnohem přehlednější.

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