Gyakorlat – Használja az "else" és az "else if" utasítást
Korábban több if
utasítást használtunk a játék szabályainak implementálásához. Amikor azonban az előző leckében abbahagytuk, volt lehetőség a fejlődésre. Javíthatjuk a kód kifejezőképességét, és javíthatunk a kód egy apró hibájának kijavítása érdekében.
A kód javítása és a hiba kijavítása más és más if utasítások hozzáadásával
A következő lépésben az utasítás variánsait fogjuk használni a if
kód továbbfejlesztéséhez és egy logikai hiba kijavításához.
1. lépés – Ha és más utasítások használata két különálló ha utasítás helyett
Ahelyett, hogy két ellenőrzést végeznénk a "Nyersz!" vagy a "Sajnáljuk, veszítesz" üzenet megjelenítéséhez, a kulcsszót else
fogjuk használni. Módosítsa a kódot úgy, hogy az megfeleljen a következő kódnak:
Random dice = new Random();
int roll1 = dice.Next(1, 7);
int roll2 = dice.Next(1, 7);
int roll3 = dice.Next(1, 7);
int total = roll1 + roll2 + roll3;
Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
{
Console.WriteLine("You rolled doubles! +2 bonus to total!");
total += 2;
}
if ((roll1 == roll2) && (roll2 == roll3))
{
Console.WriteLine("You rolled triples! +6 bonus to total!");
total += 6;
}
if (total >= 15)
{
Console.WriteLine("You win!");
}
else
{
Console.WriteLine("Sorry, you lose.");
}
Itt, ha total >= 15
hamis, a kulcsszó végrehajtása után a else
kódblokk lesz végrehajtva. Mivel ez a két lehetőség egymáshoz kapcsolódó ellentétek, ez a forgatókönyv tökéletes példa arra, hogy mikor érdemes használni a kulcsszót else
.
2. lépés – Beágyazás használata a dupla és háromszoros halmozási bónusz eltávolításához
Az előző leckében láttuk, hogy egy kisebb logikai hiba csúszott az alkalmazásunkba. Vizsgáljuk meg a beágyazással kapcsolatos hibát.
A beágyazás lehetővé teszi, hogy kódblokkokat helyezzünk el más kódblokkokban. Ebben az esetben egy másik if
utasításba (a duplajelek ellenőrzésébe) ágyazzuk if
be az else
utasításokat és az utasításokat (a triplák ellenőrzését), hogy ne forduljanak elő mindkettő.
A háromszoros eredményt ellenőrző kódot a dupla eredményt ellenőrző kódba fogjuk ágyazni. Módosítsa a kódot úgy, hogy az megfeleljen a következő kódnak:
int roll1 = 6;
int roll2 = 6;
int roll3 = 6;
int total = roll1 + roll2 + roll3;
Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
{
if ((roll1 == roll2) && (roll2 == roll3))
{
Console.WriteLine("You rolled triples! +6 bonus to total!");
total += 6;
}
else
{
Console.WriteLine("You rolled doubles! +2 bonus to total!");
total += 2;
}
}
if (total >= 15)
{
Console.WriteLine("You win!");
}
else
{
Console.WriteLine("Sorry, you lose.");
}
Ha több tucat alkalommal szeretné tesztelni a kódot az alkalmazás futtatása nélkül, ideiglenesen módosíthatja a három roll
változó értékeit úgy, hogy hozzáadja a következő kódot a deklarált és inicializált sor total
elé.
A dupla eredmény működésének ellenőrzése:
roll1 = 6;
roll2 = 6;
roll3 = 5;
A kód futtatásakor a következő kimenetnek kell megjelennie:
Dice roll: 6 + 6 + 5 = 17
You rolled doubles! +2 bonus to total!
You win!
A háromszoros munka teszteléséhez módosítsa a következő értékét roll3
:
roll1 = 6;
roll2 = 6;
roll3 = 6;
A kód futtatásakor a következő kimenetnek kell megjelennie:
Dice roll: 6 + 6 + 6 = 18
You rolled triples! +6 bonus to total!
You win!
3. lépés – Ha, másként és másként, ha a nyeremény átadására vonatkozó utasítások használata nyerési üzenet helyett
Annak érdekében, hogy a játék szórakoztatóbb legyen, változtassuk meg a játékot nyerés-veszítés típusról olyanra, amelyben egy kitalált díjat adunk minden pontszámért. Négy díjat fogunk adni. A játékosnak csak egy nyereményt kell megnyernie:
- Ha a játékos pontszáma 16 vagy magasabb, akkor egy új kocsit kap.
- Ha a játékos pontszáma 10 vagy magasabb, akkor egy új laptopot kap.
- Ha a játékos pontszáma pontosan 7, akkor egy utazást nyer.
- Minden más esetben egy kiscica a nyereménye.
Módosítsa az előző lépés kódját úgy, hogy az megfeleljen a következő kódnak:
Random dice = new Random();
int roll1 = dice.Next(1, 7);
int roll2 = dice.Next(1, 7);
int roll3 = dice.Next(1, 7);
int total = roll1 + roll2 + roll3;
Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
{
if ((roll1 == roll2) && (roll2 == roll3))
{
Console.WriteLine("You rolled triples! +6 bonus to total!");
total += 6;
}
else
{
Console.WriteLine("You rolled doubles! +2 bonus to total!");
total += 2;
}
}
if (total >= 16)
{
Console.WriteLine("You win a new car!");
}
else if (total >= 10)
{
Console.WriteLine("You win a new laptop!");
}
else if (total == 7)
{
Console.WriteLine("You win a trip for two!");
}
else
{
Console.WriteLine("You win a kitten!");
}
Megjegyzés
Az egyes üzenetek teszteléséhez használja a roll
változók ideiglenesen rögzített kódolásának technikáját.
A , else
és else if
az utasítások használatával if
több kizárólagos feltételt is létrehozhat logikai kifejezésként. Más szóval, ha azt szeretné, hogy csak egy eredmény történjen, de több lehetséges feltétel és eredmény is van, annyi utasítást használjon else if
, amennyit csak szeretne. Ha az és else if
az if
utasítások egyike sem érvényes, a rendszer végrehajtja az utolsó else
kódblokkot. Ez else
nem kötelező, de az utolsónak kell lennie.
Összefoglalás
- Az és az utasítások kombinációjával
if
else
tesztelheti a feltételt, és kódot hajthat végre, ha egy logikai kifejezés igaz, és különböző kódot futtathat, ha a logikai kifejezés hamis. - Utasítások beágyazhatók
if
egy lehetséges feltétel szűkítéséhez. Érdemes azonban inkább a ,else
éselse if
azif
utasításokat használni. - Ha egymást követő több feltételt szeretne megadni, használja az
else if
kulcsszót. - Az
else
használata nem kötelező, de ha használja, akkor annak utolsóként kell szerepelnie.
Segítségre van szüksége? Tekintse meg a hibaelhárítási útmutatót, vagy küldjön visszajelzést hibák bejelentésével.