Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

SumpfGurke

Frischling

  • »SumpfGurke« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Luxemburg

  • Private Nachricht senden

1

01.07.2013, 23:47

Hilfe bei sehr simplen Menü in C# (Console) GELÖST!

Hallo liebe Forengemeinde!

Ich bin immer noch fleissig am Lernen und wollte mir ein kleines Menü für eine sehr simple Console Application schreiben.


Und ehrlich gesagt : ich habe wirklich VIELES versucht aber ich blicke nicht durch WO der Fehler bei meinem Code liegt.

Ich poste mal meinen Code :

C#-Quelltext

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NUKE
{
    class main
    {
        static void Main(string[] args)
        {

            // SET CONSOLE PARAMETER

            Console.Title = "NUKE V.0.0.0.1";

            Console.BackgroundColor = ConsoleColor.Black;
            Console.ForegroundColor = ConsoleColor.Green;
            
            // MENUE

            string userchoice;

            Console.WriteLine("*********************\n");
            Console.WriteLine("*   NUKE V.0.0.0.1  *\n");
            Console.WriteLine("*********************\n");
            Console.WriteLine();
            Console.WriteLine("PLEASE MAKE YOUR CHOICE!\n");
            Console.WriteLine();
            Console.WriteLine("(S) START (I) INFO (E) EXIT\n");


            do {

                userchoice = Console.ReadLine();
                if (userchoice == "S")
                    break;

                else if (userchoice == "I")

                    Console.WriteLine("(C) BY BECKER ALAIN\n");
                else if (userchoice == "E")
                    Console.WriteLine("THANK YOU FOR USING NUKE V.0.0.0.1\n");
                return;

                else  {

                    // WRONG INPUT

                    Console.WriteLine("WRONG INPUT!\n");
                    Console.WriteLine("PLEASE TRY AGAIN!\n");
                }
            }

            while(true);

            Console.WriteLine("ES GEHT WEITER!\n");
            Console.ReadLine();

        }
    }












}



ERROR LOG :

Fehler 1 Ungültiger Ausdruck "else". C:\Users\ALAIN\Projects\NUKE\NUKE\NUKE\main.cs 47 17 NUKE
Fehler 2 ; erwartet. C:\Users\ALAIN\Projects\NUKE\NUKE\NUKE\main.cs 47 23 NUKE
Fehler 3 Nur assignment-, call-, increment-, decrement-, await- und "new object"-Ausdrücke können als Anweisung verwendet werden. C:\Users\ALAIN\Projects\NUKE\NUKE\NUKE\main.cs 45 23 NUKE


Ich habe mich an das Buch gehalten (da funktioniert der Code auch)

C-/C++-Quelltext

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
38
39
40
41
 // Beispiel: ..\Kapitel 2\DoSample

class Program {
static void Main(string[] args) {

// Informationsanzeige

Console.Write("W - Programm fortsetzen\n");
Console.Write("E - Programm beenden\n");
Console.Write("-----------------------\n");

// Schleife wird so oft durchlaufen, bis der Anwender

// eine gültige Eingabe macht

do {
Console.Write("Ihre Wahl: ");
string eingabe = Console.ReadLine();
if(eingabe == "W")

// das Programm nach dem Schleifenende fortsetzen

break;
else if(eingabe == "E")

// das Programm beenden

return;
else {

// Fehleingabe! 

Console.Write("Falsche Eingabe - ");
Console.Write("Neueingabe erforderlich\n");
Console.Write("-----------------------\n");
}
} while(true);
Console.WriteLine("...es geht weiter.");
Console.ReadLine();
}
}



----------------------------

Wodurch werden die Fehler fabriziert?

Ich bin mittlerweile wirklich mit meinem aktuellen! Wissen am Ende!

Vielleicht kann mir ja einer auf die Fährte helfen?

Ich wäre überaus dankbar weil ich VERSTEHEN will WARUM es nicht funktioniert und aus den Compilermeldungen werde ich irgendwie nicht schlau.
Ist doch etwa das Gleiche wie aus dem Buch nur "erweitert"?

MFG und Vielen Dank im Voraus
ERROR 404 NO BRAIN FOUND

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »SumpfGurke« (02.07.2013, 01:02) aus folgendem Grund: Frage beantwortet


Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

2

02.07.2013, 00:03

Kleiner Tipp: Ein return, auf das Anweisungen mit der selben Anzahl von Tabstopps folgen, ist meist kein gutes Zeichen ;)
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

SumpfGurke

Frischling

  • »SumpfGurke« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Luxemburg

  • Private Nachricht senden

3

02.07.2013, 00:38

Ist schon etwas spät und ich hatte heute Morgen eine Vollnarkose hinter mir (kleiner Eingriff) desshalb kann es vorkommen,dass ich mich aktuell etwas "blöde" anstelle :wacko:

Also liegt der Fehler beim return?

Gibt es denn eine "elegantere" Methode die App zu schliessen?

(Ich bemühe auch noch google keine Angst)

Geht mir ja darum zu wissen WARUM es nicht funktioniert :-)

Learning by doing
ERROR 404 NO BRAIN FOUND

SumpfGurke

Frischling

  • »SumpfGurke« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Luxemburg

  • Private Nachricht senden

4

02.07.2013, 00:41

So ich habe das return mal rausgenommen.
Der Compiler meldet nun keine Fehler mehr aber das Programm wird natürlich nicht beendet ;-)

Ne "Idee" wie ich das lösen könnte? :)
ERROR 404 NO BRAIN FOUND

SumpfGurke

Frischling

  • »SumpfGurke« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Luxemburg

  • Private Nachricht senden

5

02.07.2013, 00:51

Ahhhhhhhhhhh.....

Gefunden.

Die ELSE muss zusätzlich in {}
und return; natürlich innerhalb der {}


Dann hätte ich noch EINE Frage ;-)

Gibt es eine Möglichkeit wieder zum Anfang der Main zu springen?
D.h nach der Meldung,dass es einer fehlerhafte Eingabe war z.B

Oder schreibt man für solche Sachen lieber gleich eigene Funktionen?


EDIT : PROBLEM GELÖST! :-) Danke für deinen Hinweis :)
Für viele hier ist es nur ein sehr kleiner Schritt...aber ein Riesensprung für MICH :D
ERROR 404 NO BRAIN FOUND

6

02.07.2013, 14:40

Hallo

Wen ich du wäre würde ich eine menü klasse schreiben. In dem du den Input des Menüs und das Anzeigen des Menüs managest.
Dan würde ich eine Art von Runtime Klasse schreiben in der das Menü verfügbar ist. Innerhalb der Runtime Klasse machst du ne while schleife(z.b while(isRunning == true).
In der Schleife bauste evt fals gewünscht verscheidene States ein.

Pseudocode

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Runtime
{
    public static int MAINMENU_STATE = 0;
    public static int RUN_PROGRAM = 1;
    public void run()
    {
        while(isRunning == true)
        {
                if(state == MAINMENU_STATE)
                 {
                    ///show mainmenu
                 }
            //          etc etc

        }    
    }
}

Ich hoffe ich konnte helfen

Gruss Spitzohr

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

7

02.07.2013, 15:51

Wenn es ums zurück springen geht, sind Schleifen oft ein ganz guter Ansatz. Dadurch kannst du ja Code wiederholt ausführen. Was du dir einfach angewöhnen solltest, bei if-else Schleifen und allem, einfach immer Klammern benutzen. Als ich noch neben der Uni gearbeitet habe war das bei den meisten Projekten bei uns sogar Pflicht. So gab es bestimmte Richtlinien die eingehalten werden mussten und diese Pflicht von Klammern gehörte dazu. Kurz ist manchmal toll, übersichtlich ist jedoch fast immer besser. Gewöhne es dir einfach an, egal wie viele Zeilen folgen und solche Fehler können dir erst gar nicht mehr passieren.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

SumpfGurke

Frischling

  • »SumpfGurke« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Luxemburg

  • Private Nachricht senden

8

02.07.2013, 17:42

Hallo

Auch euch beiden vielen Dank!

Das mit den {} werde ich ab jetzt beherzigen!

Auch die Menue Klasse werde ich versuchen einzubauen d.h ich bastele gerade etwas an meinem Code :-)


Wenn diese blöde OP nicht gewesen wäre könnte ich dies nun auch ohne Schmerzen *narf*
Da ist man 4 Monate krank gemeldet und könnte sich richtig "reinhängen" (was soll man auch sonst tun?) und dann kann man weder richtig sitzen oder liegen. *narf*

Auch wenn diese Person die mir das angetan hat und gedacht hat sie müsste mich mal eben mit 2,2 Promille mit dem Porsche von meinem Motorrad hauen NIE lesen wird :

Ich wünsche "Ihnen" einen fiesen Ausschlag da wo keine Sonne scheint. :cursing: :cursing:
ERROR 404 NO BRAIN FOUND

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

9

02.07.2013, 17:46

Oh dann Gute Besserung und hoffentlich wirst du wieder schnell fit.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

SumpfGurke

Frischling

  • »SumpfGurke« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Luxemburg

  • Private Nachricht senden

10

03.07.2013, 03:41

Many Thanks :thumbup:
ERROR 404 NO BRAIN FOUND

Werbeanzeige