C# Menü als Methode abrufen?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
//dummywert für Menüeingabe
char menuantwort = '0';

//solange wiederholen bis x gedrückt wurde
while (menuantwort != 'x')
{
//Menü anzeigen
menu();
//Warte auf Antwort
menuantwort = Console.ReadKey(true).KeyChar;
//Anwort zeigen
show(menuantwort);
}
}

static void menu()
{
Console.WriteLine("---Menü---");
Console.WriteLine("1... Spiel starten");
Console.WriteLine("2... Anleitung");
Console.WriteLine("3... Ziel des Spiels");
Console.WriteLine("x... Spiel verlassen");

}

static void show(char key)
{

//switch für 1-3 hier
switch (key)
{
case '1':
Console.WriteLine("1");
break;

case '2':
Console.WriteLine("2");
break;

case '3':
Console.WriteLine("3");
break;
}

}
}

Quick&Dirty (Visual C#)

Eine Schleife um das ganze bauen, die Endebedingung der Schleife hast du ja schon im Menü.

also

for (;;) /* Endlosschleife, so was wirst du irgendwann immer verwenden */

{

menu();

if menueantwort == 'x' break; (oder auch exit(), wie du willst -- kann auch ins switch/case)

switch-case();

}

Ich verstehe nicht so ganz, wo das Problem ist:

Console.Clear();
menu();


So sollte das doch grob gehen, oder ?

klappt nicht egal wo ich es hinschreibe.

könnte es weiterhelfen, wenn ich den ganzen code schicke?

der ist etwas lang^^

0
@MikeM2601

Programmieren ist nicht rumprobieren. Methoden folgen einer Logik, deiner Logik, und einer klaren Struktur.

Ich sehe das so, dass dein Problem ist, dass du nicht weißt, wie du von der Anleitung zurück in das Menü kommst.

In deinem case '2' erstellst du deine Ansicht für die Anleitung und von hier aus musst du auch irgendwie wieder zurück zu deinem Menü. Ganz einfach wäre es, auf die Eingabe des Nutzers zu warten:

Console.WriteLine("Drücken Sie eine Taste, um zum Menü zurückzukehren.")
Console.ReadKey()

Dann wissen wir, dass der Nutzer fertig gelesen hat.

Dann säubern wir die Konsole und erstellen das Menü wieder:

Console.Clear();
menu();

Das setzt voraus, dass deine Klasse ungefähr so aussieht:

    public class MyClass
{
static char menu() { ... }

void Switching() {
... case '2': ...
}
}

Ich kenne deinen Code jetzt nicht, da menu() noch etwas zurückgibt, was wahrscheinlich verarbeitet wird, musst du das wahrscheinlich anders aufrufen, aber eine Methode in deinem Code ist definitv der richtige Weg.

0

C# Csharp (Konsolenanwendung). Frage bezüglich String Arrays. Kann mir wer helfen?

Hallo Leute. Ich möchte ein "Artikel Erfassung-Programm" erstellen. In diesem Programm muss ich 5 Optionen einbauen. (bei Eingabe im Hauptmenü)

1 = Artikel erfassen / 2 = Erfasste Artikel anzeigen / 3 = Menge der Artikel / 4 = Artikel Suchen / 5 = Artikel Löschen / q = Programm Beenden

Ich weis wie man anfängt, aber ich kann genau einen Artikel abspeichern. Ich weis nicht wie ich mehrere Artikel abspeichern kann. Ich habe mal was von String[] Arrays gehört weis aber nicht wie es Funktioniert :/ Habe auch schon sehr lange Recherchiert habe aber nichts passendes gefunden... (PS: Arbeite seit 1 Monat mit Csharp)

Danke jetzt schon mal für eure Hilfe :)

...zur Frage

C# Wie kann ich mehrere werte von z.b. einer Switch case Anweisung in meine Main Methode ,,returnen''?

Hallo, ich habe ein kleines Problem wofür ich am besten schnell eine Antwort brauche, da dass Schulprojekt heute Nacht per email bei meinem Schulleiter sein muss.

Wir haben die Aufgabenstellung bekommen dieses projekt in 2 Methoden aufzuteilen. Einmal die static void Main und dann eine eigene. WIr sollen dort Spannung,widerstand und Ampere berechnen können mit allen physikalischen regeln. Diese mit der Switch case und einer if abfrage einzustellen ist kein Problem aber ich habe dadurch in meiner eigenen Methode allein 3 mögliche Ergebnisse und 3 bool werte die ich an die Main Methode ,,return'' muss.
Will halt in der Main Methode eine if abfrage machen, die dann feststellt welches Ergebnis den vorliegt [also R,U oder I (dafür brauch ich die Bool Werte)].

Habt ihr eine Idee wie ich das machen kann? Hab halt in einer case ein Ergebnis sowie einen bool der returnt werden muss. Daher klappt meiner Meinung nach der ,,return'' als jump Anweisung am eende einer case nicht(kann damit ja nur einen wert wiedergeben).

Würde mich über Hilfe freuen.

Hier mal schnell nen kleiner Ausschnitt aus dem Code um es Bildlich zu zeigen:

if (bRZahl == true) {

           Console.Clear();
           Console.SetCursorPosition(2, 1);
           Console.Write("Spannung Berechnen");
           Console.SetCursorPosition(2, 5);
           Console.Write("Geben sie den Wert für I (Ampere) an:");
               switch (ckiTaste.Key)
                        {                                       
                           Hier stehen eigentlich die Physikalischen Grenzen drinne!!!
                                                              }

                               Console.ReadKey(ckiTaste.Key == ConsoleKey.N);
                                IZahl = Convert.ToDouble(sbEingabe2);
                                UZahl = IZahl * RZahl;
                                Spannung = true;
                  
                              }
                               return UZahl;

Das ist jz nur der 2 Teil der Case. DIe seite lässt die ganze case nicht zu. Aber da sieht man schonmal die beiden Werte die ich mit rüber nehmen will. Hier als Beispiel UZahl und Spannung. Diese If Abfrage hier liegt halt in der Case 1 (für die Berechnung der Spannung)

Würde mich auf jedenfall über Hilfe freuen Danke.

...zur Frage

Visual Studio 2017 RC Community ist abgelaufen: Hilfe, wie setze ich mein wichtiges Projekt jetzt fort?

Liebe Community,

vor einigen Wochen habe ich auf meinen Rechnern den Release Candidate von Visual Studio 2017 installiert, die finale Version ist ja noch nicht draußen, und zwar in der i. d. R. kostenfreien Community-Edition.

Aber heute durfte ich feststellen, dass diese Version abgelaufen ist! Wieso läuft die Testversion für eine kostenfreie Edition ab - noch dazu, bevor die finale Version veröffentlicht ist?! :-(

Ich war so naiv, ein bestehendes Projekt, das ich in Bälde abgeben muss (5. PK - Abiturkomponente), bereits auf C# 7 upzugraden, und kann jetzt die neue IDE nicht mehr nutzen! Den bestehenden Code hatte ich bereits für C# 7 umgeschrieben, bei meinen ca. 100 - 200 Klassen und Interfaces wäre das erneute Umschreiben auf C# 6 enormer Aufwand!

Wie kann ich das Problem jetzt beheben - kann ich die Testversion irgendwie erneuern oder eine andere Edition probieren? Oder gibt es eine andere Möglichkeit, vorübergehend C# 7 weiterzunutzen?
PS: Gibt es vielleicht noch alternative IDEs, die keinen größeren Einarbeitungsaufwandes benötigen und C#-7-fähig sind?

Und wann wird eigentlich die finale Version von 2017 erscheinen? Ist die Community-Edition dann wieder kostenfrei?

Ich bin verzweifelt und bitte um eure Hilfe! :-(

Mit freundlichen Grüßen,
KnorxThieus (♂)

...zur Frage

C# - List als Tabelle ausgeben?

Servus liebe Programmierer! Ich habe in meinem C# Consolen Programm eine while-Schleife, die mir mehrere Zahlen ausgibt. All diese Zahlen werden zu einer Liste hinzugefügt. (Es muss eine Liste sein, weil ich nicht weiss, wieviele Zahlen es werden, bis die while Schleife durch ist.) Nach dem Ablauf der Schleife möchte ich gerne diese Liste ausgeben, aber eben als formatierte Tabelle, mit bspw. immer 5 Zahlen pro Reihe und eben so viele Reihen wie nötig sind.

Leider stehe ich irgendwie vor einer Wand und weiss nicht, wie ich das erzielen könnte... Jemand eine Idee? :)

Schönen 3. Advent noch!

...zur Frage

AC Unity neues Spiel starten?!

Mein Onkel hats schon für Mich angezockt auf meinem Profil würde gerne ein neues Spiel starten doch im Menü steht da nichts von ?!

...zur Frage

Virenprogramm blockiert Spiel

Company oft Hereos lässt sich nicht mehr starten. Ich wollte das Spiel starten als mein Virenprogramm Avast angeblich einen Virus bei dem Spiel gefunden hat. Habe schon den dateipfad des Spiels zur Ausnahmeliste hinzugefügt und das Spiel + Virenprogramm neu heruntergeladen und installiert trotzdem lässt es sich nicht starten. Das Spiel habe ich bei Steam gekauft wenn ich es starte kommt eine Fehlermeldung das die Programmdatei fehlt.

...zur Frage

Was möchtest Du wissen?