Im Kapitel Verzweigungen (if, else if, else) hatten wir mit einem else if überprüft, ob der Nutzer eine der Antwortmöglichkeiten ausgewählt hat. War dies nicht der Fall, haben wir ihm das entsprechen zurückgemeldet.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
else /* falsche Antwort */
{
    if (Antwort == "1983")
    {
        Console.WriteLine("Nein, das ist ein wenig zu früh!");
    } 
    else if (Antwort == "1999")
    {
        Console.WriteLine("1999 ist Polen schon der NATO beigetreten.");
    }
    else if (Antwort == "1989")
    {
        Console.WriteLine("Knapp dran, 1989 war der Mauerfall.");
    }
    else
    {
        Console.WriteLine("Das war keine mögliche Antwort.");
    }
 
    Console.WriteLine("Leider falsch.");
}

Ändern wir jetzt die Situation so, dass wir auf keine der falschen Antwortmöglichkeiten explizit eingehen wollen, sondern bei einer falschen Antwort nur noch "Leider falsch." ausgeben wollen, aber zusätzlich den Nutzer darauf hinweisen, wenn er keine der Antwortmöglichkeiten genutzt hat.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace if_compl
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("In welchem Jahr wurde die DDR an die BRD angegliedert?");
            Console.WriteLine("1983");
            Console.WriteLine("1999");
            Console.WriteLine("1990");
            Console.WriteLine("1989");

            Console.WriteLine("Gib deine Antwort bitte jetzt ein:");

            string Antwort = Console.ReadLine();

            if (Antwort == "1990") /* richtige Antwort */
            {
                Console.WriteLine("Korrekt!");
            }
            else /* falsche Antwort */
            {
                /*
                Keine Antwortmöglichkeit genutzt
                */

                Console.WriteLine("Leider falsch.");
            }
        }
    }
}

Wie finden wir jetzt heraus, dass der Nutzer keine der Antwortmöglichkeiten genutzt hat, ohne für jede der vorgegebenen falschen Möglichkeiten eine extra if-Abfrage zu schreiben?

Was darf denn nicht passieren, damit wir das erkennen? Der Nutzer darf

  • weder 1983,
  • noch 1999,
  • noch 1989

als Antwort eingegeben haben. Die richtige Antwortmöglichkeit 1990 müssen wir hier nicht beachten, da die ja schon in der vorhergehenden Bedingung geprüft wurde und das else bei dieser Eingabe garnicht ausgeführt wurde.

Wir müssen jetzt also die drei Möglichkeiten Antwort != "1983"Antwort != "1999" und Antwort != "1989" mit einem UND verknüpfen. Also: Die Antwort...

  • ist nicht 1983, und
  • ist nicht 1999, und
  • ist nicht 1989

In C# sieht das dann wie folgt aus: Antwort != "1983" && Antwort != "1999" && Antwort != "1989".

Damit würde unser else-Block dann so aussehen:

1
2
3
4
5
6
7
8
9
else /* falsche Antwort */
{
    if (Antwort != "1983" && Antwort != "1999" && Antwort != "1989")
    {
        Console.WriteLine("Das war keine mögliche Antwort.");
    }

    Console.WriteLine("Leider falsch.");
}

Projektdateien