Portál AbcLinuxu, 12. května 2025 05:41
if ((promenna1==hodnota1) || (promenna1==hodnota2)) && ((promenna2==hodnota1) || (promenna2==hodnota2)) && ((promenna3==hodnota1) || (promenna3==hodnota2)) {...}jenže to nefunguje. Pokud jsou v podmínce jen hodnoty první proměnné, vypíše se skutečně tvrzení1 nebo tvrzení2 podle toho, jakou hodnotu proměnná1 právě má, ale když připojím druhou proměnnou, nevypíše se už vůbec nic. Buď tam mám "pravopisnou" chybu nebo se to takto udělat nedá. Prosím o radu. Děkuji.
if (...) { }
. A problém je s prioritou operátorů a || b && c || d
se vyhodnotí stejně jako a || (b && c) || d
. Je tedy potřeba to uzávorkovat (a || b) && (c || d)
. Nebo přepsat, aby tam taková sáhodlouhá podmínka vůbec nebyla.
if (promenna1.isIn(hodnota1, hodnota2) && promenna2.isIn(hodnota1, hodnota2) && promenna3.isIn(hodnota1, hodnota2)) { ... }Zcela jistě se to dá ještě zjednodušit, ale neznám kontext, ze kterého to bylo vytrženo. Například konstanty
hodnota1
a hodnota2
by mohly být již součástí objektu. Podmínka by vypadala ještě lépe:
if (promenna1.isValid() && promenna2.isValid() && promenna3.isValid()) { ... }
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.