Hogy hogy lehet ezt az if else szerkezetet switch case-re átírni? int db = 0; if (x == 0 && y == 0) //1 { if (regiallapot[x + 1, y] == '#') db++; if (regiallapot[x + 1, y + 1] == '#') db++; if (regiallapot[x, y + 1] == '#') db++; }
Maximum a 3 belső if-et lehet egybe belerakni:
Ezen agyalok egy ideje, de szerintem sehogy. A switch általában egy változót hasonlít össze konstansokkal. A te 3 if-ed 3 konstanst hasonlít össze egy konstanssal.
Tegyük fel, hogy a nyelv ezt megengedi.
Akkor mondjuk így nézne ki:
switch("#") {
__case(regiallapot[x+1,y]): db++; break;
__case(regiallapot[x+1,y+1]): db++; break;
__case(regiallapot[x,y+1]): db++; break;
}
Ebben az esetben vagy eggyel növekszik a db értéke vagy nem növekszik, mert a break-ekkel mindig kilép a switch blokkból.
Ha elhagyod a blokkokat, akkor az első teljesülő feltétellel belép, és a hátralévő db++-okkat végrehajtja akkor is, ha az előtte álló feltétel nem teljesül.
Ami megint nem a kívánt működés.
A switch case if-else-ek átírására való, ezek nem if-else-ek, csak if-ek egymás után.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!