Gyakorlat – Használja az "else" és az "else if" utasítást

Befejeződött

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 iftö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 ifelse 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és else if az ifutasí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.