Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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! :)

pack die konvertierung in einen try-catch-block. damit fängst du konvertierungsprobleme ab. so kannst du einen standardwert(z.b. -1) setzen, wenn es beim umwandeln zu einem fehler kam

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.

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

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();

        }

    }

}

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.

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...

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.

gern geschehen :)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.