Zum Inhalt springen

C# Problem mit Menüerstellung


Empfohlene Beiträge

Geschrieben

hi leute!

wie ihr seht, bin ich neu hier.

dementsprechend bin ich auch ein totaler anfänger, was das programmieren angeht!

ich habe folgendes problem:

ich habe ein menü erstellt, wo der user eine eingabe machen muss, um zu verschiedenen aufgaben zu gelangen. das passiert via switch und case.

nun ist mein problem, das wenn der user einen buchstaben, oder ein zeichen oder ausversehen 2 x enter drückt, ich sofort eine fehlermeldung bekomme!

das menü sieht so aus:

class Program

    {

        static void Main(string[] args)

        {

            double dZinssatz, dBetrag, dKapital = 1, dZ, dB;

            int i, iEingabe, iAufgabe, iLaufzeit, iL ;

            long lFakultaet;

            do

            {

                Console.WriteLine("");

	            Console.WriteLine("Suchen Sie sich bitte eine der folgenden Aufgaben aus:");

	            Console.WriteLine("");

	            Console.WriteLine("Aufgabe 1                <1>");

	            Console.WriteLine("Aufgabe 2                <2>");

	            Console.WriteLine("Aufgabe 3                <3>");

	            Console.WriteLine("Aufgabe 4                <4>");

	            Console.WriteLine("Aufgabe 5                <5>");

	            Console.WriteLine("Aufgabe 6                <6>");

	            Console.WriteLine("Aufgabe 7                <7>");

	            Console.WriteLine("Programm beenden         <0>");

	            Console.WriteLine("");

	            Console.WriteLine("");

	            iAufgabe = Convert.ToInt32(Console.ReadLine());

	            Console.Clear();



                    switch (iAufgabe)

                    {

                        case 0:

                            Console.WriteLine("Das Programm wird beendet.");

                            break;


                        case 1:


                   .

                   .

                   .


                     default:

                            Console.WriteLine();

                            Console.WriteLine("!!Ungültige Eingabe!!");

                            Console.WriteLine();

                            Console.WriteLine("Bitte wählen sie eine Zahl zwischen 1 und 7 um eine Aufgabe zu starten oder die 0 um das Programm zu verlassen!");

                            break;


                    }



            } while (iAufgabe != 0);

                Console.ReadKey();

        }

wie bekomm ich das hin, das er schaut, ob's eine der menü-zahlen ist und ansonsten halt den hinweis schreibt, das die eingabe falch war?

schon mal danke für die hilfe! :)

Geschrieben

Schau Dir ansonsten mal bool Int.TryParse(string, out int) an.

Damit kannst Du versuchen einen String umzuwandeln. Wenn die Umwandlung funktioniert, liefert es true zurueck und traegt die Zahl in den Int ein.

Damit kannst Du Dir das Abfangen der Exception sparen.

Geschrieben
Schau Dir ansonsten mal bool Int.TryParse(string, out int) an.

Damit kannst Du versuchen einen String umzuwandeln. Wenn die Umwandlung funktioniert, liefert es true zurueck und traegt die Zahl in den Int ein.

Damit kannst Du Dir das Abfangen der Exception sparen.

Das wäre sogar die elegantere Methode.

Bin ich denn schon so eingerostet? :upps

Geschrieben

so, hab jetzt ein bissel rumgebastelt und es haut hin!

hab aber trotzdem noch ein problem und hoffe, ihr könnt mir bei der lösung helfen (und zwar so, dass ich es verstehe!^^)

er filtert jetzt die fehleingaben raus und alles ist prima, nur das ich bei den fehleingaben aus buchstaben, zeichen etc jetzt mit einer goto-anweisung gearbeitet habe! ich weiß aber auch, dass diese veraltet und nicht gern gesehen sind! ich weiß sonst einfach keinen anderen weg, wie ich vom "else"-fall wieder zum start (auswahlmenü) gelange.

ich denke mal "... wald vor lauter bäumen" und so^^

need help!


 class Program

    {

        static void Main(string[] args)

        {

            double dZinssatz, dBetrag, dKapital = 1, dZ, dB;

            int i, iEingabe, iAufgabe, iLaufzeit, iL ;

            long lFakultaet;

            string sAufgabe;


            start:

            do

            {

                Console.WriteLine("");

	            Console.WriteLine("Suchen Sie sich bitte eine der folgenden Aufgaben aus:");

	            Console.WriteLine("");

	            Console.WriteLine("Aufgabe 1                <1>");

	            Console.WriteLine("Aufgabe 2                <2>");

	            Console.WriteLine("Aufgabe 3                <3>");

	            Console.WriteLine("Aufgabe 4                <4>");

	            Console.WriteLine("Aufgabe 5                <5>");

	            Console.WriteLine("Aufgabe 6                <6>");

	            Console.WriteLine("Aufgabe 7                <7>");

	            Console.WriteLine("Programm beenden         <0>");

	            Console.WriteLine("");

	            Console.WriteLine("");

	            sAufgabe = Convert.ToString(Console.ReadLine());

                Console.Clear();



                if (Int32.TryParse(sAufgabe, out iAufgabe))

                {

                     switch (iAufgabe)

                    {

                        case 0:

                            Console.WriteLine("Das Programm wird beendet.");

                            break;


                        case 1:

                            //-----------// Es soll mit einer kopfgesteuerten Schleife 100 mal "Hallo" ausgegeben werden

                            //-Aufagbe-1-//

                            //-----------//

                            Console.WriteLine("Aufgabe 1");


                        .

                        .

                        .


                        default:

                            Console.WriteLine();

                            Console.WriteLine("!!Ungültige Eingabe!!");

                            Console.WriteLine();

                            Console.WriteLine("Bitte wählen sie eine Zahl zwischen 1 und 7 um eine Aufgabe zu starten oder die 0 um das Programm zu verlassen!");


                            break;

                    }

                }

                else

                {

                    Console.WriteLine();

                    Console.WriteLine("!!Ungültige Eingabe!!");

                    Console.WriteLine();

                    Console.WriteLine("Bitte     wählen sie eine Zahl zwischen 1 und 7 um eine Aufgabe zu starten oder die 0 um das Programm zu verlassen!");


                    goto start;

                }






            } while (iAufgabe != 0);

                Console.ReadKey();

        }

    }

}

Geschrieben

Es gibt die Continue-Anweisung. Damit wird die Ausführung mit der nächsten Schleifenausführung fortgesetzt.

Ich glaube, dass TryParse den Int auf 0 setzt, also müsstest Du in Deinem else-Teil noch den Wert auf z.B. -1 setzen, damit die Schleife auch weiter fortgesetzt wird. Alternativ kannst Du für den Punk "Abbrechen" auch einen Wert != 0 verwenden.

Geschrieben

setz in deinem else-teil den Wert von iAufgabe doch einfach auf einen fiktiven Wert, z.B. -1

bei deinem aktuellen quelltext wird die abbruchbedingung der schleife doch erst danach geprüft. da die bedingung so für einen weiteren schleifendurchlauf erfüllt ist, kannst du dir die goto-anweisung auch sparen

  • 3 Wochen später...
Geschrieben

ok, da bin ich wieder!

hab des gerade mal umgestellt (also bei "else" iAufgabe = -1) und es funtioniert tadellos! besten dank an euch kompetente problemlöser! :)

mfg,

hänz.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...