Wie kann ich in C# in der Konsole auf einselne Unterprogramme eine art Menü machen?

... komplette Frage anzeigen

3 Antworten

Schau dir mal die Methode Console.ReadKey an
Die wartet bis zu irgendeinem Tastendruck und gibt dir dann alle Infos zu diesem Tastendruck zurück.

Du könntest dann z.B. das machen:

Console.WriteLine("1 - Addieren");
Console.WriteLine("2 - Subtrahieren");
// ...

var pressedKey = Console.ReadKey();

// Wenn z.B. ALT gedrückt sein soll:
if (pressedKey.Modifiers.HasFlag(ConsoleModifiers.Alt))
{
// ...
}

if (pressedKey.Key == ConsoleKey.D1 || pressedKey.Key == ConsoleKey.NumPad1)
    PreformeAdd();
else if (pressedKey.Key == ConsoleKey.D2 || pressedKey.Key == ConsoleKey.NumPad2)
PerformeSubtract();
// ...

Wer Schreibfehler findet, darf sie gerne behalten, dieser Text-Editor hier ist eine Vollkatastrophe, da ist jedes Möchtegern-Forum besser -.-

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Palladin007
20.09.2016, 13:29

PS:

Das oben ist ziemlich einfach gehalten.
Besser wäre natürlich, wenn in einer Schleife geprüft wird, ob die Eingabe korrekt ist und ein Fehler angezeigt wird, wenn nicht.

0
Kommentar von greenvbuser
20.09.2016, 13:38

Was hat der Editor mit Rechtschreibung zu tun? :D

0

Am einfachsten wäre es wenn du sowas machst:

  • 1 Plus
  • 2 Minus
  • 3 Mal
  • 4 Geteilt

Wenn der Nutzer sich dann für eine Zahl entscheidet wird die jeweilige Rechenoperation ausgeführt.

Also:

  • Eingabe Zahl 1
  • Eingabe Zahl 2
  • Aufruf Untermenü
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von BobBizeps2307
20.09.2016, 13:05

Steh gerad bisschen aufm Schlauch wie kann ich das aber Umsetzen? So wie Sie das beschreiebn haben so habe ich mir das auch gedacht.

0

Stell dir folgende Konsolenausgabe vor:

Herzlich Willkommen bei meinem Mini-Taschenrechner
===================================================

[HAUPTMENÜ]
1   Addieren
2   Subtrahieren
3   Multiplizieren
4   Dividieren
0   Beenden

Bitte wähle jetzt: █

Nun fragst du über

int menuSelection = 0;

while(true) {
    if(Int32.TryParse(Console.ReadLine(), out menuSelection) &&
    menuSelection >= 0 && menuSelection <= 4) {
        break;
    }
    else
    {
        Console.WriteLine("Ungültige Eingabe! Versuch's noch mal.");
    }
}

die aktuelle Eingabe des Nutzers ab. Danach kannst du mit einem einfachen Switch-Case-Block die Unterprogramme starten.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Palladin007
20.09.2016, 13:31

Besser wäre Console.ReadKey

Damit kann man auch ausstellen, dass die gedrückte Taste in die Konsole geschrieben wird und es ist nur eine Taste, die gedrückt werden muss - ohne Enter.

Es muss auch nicht zu int geparst werden und es sind Modifiers wie ALT, etc. möglich.

0
Kommentar von KnorxyThieus
20.09.2016, 14:43

Hierbei sollte man jedoch unbedingt Enums verwenden, die viel einfacher abgefragt werden können:

enum OperationMode
{
   Add = 1,
   Substract = 2,
   Multiply = 3,
   Divide = 4
}

Dann ist auch der switch-Block via Visual Studio einfacher (mit Doppel-Tab) zu erstellen und die Eingabe einfacher zu überprüfen (Enum.IsValid(value) oder so ähnlich).

0

Was möchtest Du wissen?