Vom Case zur Case-Auswahl springen?

Cygan

Mitglied
Hallo!
Wir sollen das grobe Skelett einer Dokumentenverwaltung aufbauen.
Darunter fallen Dinge wie bekannte Dokumente angeben, löschen, hinzufügen und ein klassisches "Programm beenden".

Nun ich habe bisher den Großteil, en wir machen sollten, abgeschlossen.
Ich habe Cases verwendet, um die oben genannten Methoden umzusetzen.

Ich hänge derzeit bei der "Programm beenden"-Methode, da ich einfach nicht weiß, wie ich vom dem aktiven Case einen Schritt zurückspringen soll, zu der Auswahl der 4 vorgegebenen Methoden.

Java:
        case 4:
            System.out.println("Möchten Sie das Programm wirklich beenden?"); 
            System.out.println("<1> JA");
            System.out.println("<2> NEIN");
            int abfrage = eingabe.nextInt();
            if (abfrage == 1) {
                System.exit(0);
            } else {
                //<<STATEMENT>>
            }
            break;

Im "else"-Teil weiß ich einfach nicht, was ich einbauen soll :(
 
S

SlaterB

Gast
zurückspringen gibt es nicht, um den Code gehört eine while(true)-Schleife, dann geht es am Ende einer Runde wieder vorne los
 

Cygan

Mitglied
Geeeeil! Es klappt! :)

Java:
...
boolean case4 = true;
while (case4 == true) {
....
        case 4:
            System.out.println("Möchten Sie das Programm wirklich beenden?"); 
            System.out.println("<1> JA");
            System.out.println("<2> NEIN");
            int abfrage2 = eingabe.nextInt();
                if (abfrage2 == 1) {
                System.exit(0);
                } else {
                case4 = true;
                }

so klappts bei mir! :)

Vielen vielen lieben Dank! Ich wusste, dass ich eine Schleife brauche, aber auf den Boolean wäre ich echt nicht gekommen!
 

Cygan

Mitglied
Eine Frage hätte ich da noch:

ich würde den ganzen Case gerne in eine methode verpacken, damit die Main-Methode schlanker wird, ich steh grad aber ehrlich gesagt auf dem Schlauch, wie ich die Methode beschreiben und wie ich in der Main-methode in den Cases darauf verweisen soll???:L

Java:
    public static boolean beenden() {
        Scanner eingabe = new Scanner(System.in);
        System.out.println("Möchten Sie das Programm wirklich beenden?"); 
        System.out.println("<1> JA");
        System.out.println("<2> NEIN");
        int abfrage2 = eingabe.nextInt();
        if (abfrage2 == 1) {
            System.exit(0);
        } else {
            boolean weitermachen = true;
        }
        return boolean weitermachen;
    }

bei dem "return" sagt er mir:
Multiple markers at this line
- Syntax error, insert ";" to complete ReturnStatement
- This method must return a result of type boolean


Die Main-Methode:
Java:
        case 4:
            weitermachen = beenden();
            break;
 
Zuletzt bearbeitet:
S

SlaterB

Gast
den boolean kannst du in dieser Konstellation eigentlich komplett vergessen, der hat Startwert true und wird zu true, aber nie false?
bei System.exit() ist das Programm eh zu Ende, da musst du über Schleifenabbruch nicht nachdenken,

wie gesagt ginge auch eine while(true)-Endlosschleife,
die Methode könnte ohne Rückgabewert auskommen

-------

> return boolean weitermachen;
ist kein korrekter Java-Code,
hast du je ein Programm mit einem akzeptierten return geschrieben, irgendwo je ein Beispiel im Internet gesehen?
wenn nicht dann suche jetzt erstmal eins, vergleiche, sonst frage nochmal und poste das gefundene korrekte Beispiel dazu

falls es beim boolean bleibt bedenke auch Variablensichtbarkeiten,
was in einem else definiert wird ist danach nicht mehr zu sehen,
-> vor der Verzweigung Variablen deklarieren
 

Cygan

Mitglied
Habs mir also etwas zu kompliziert gemacht... hab das "else" gelöscht, "return true;" nach der if-Anweisung und es wird nun über den Verweis, den ich bereits angegeben habe, aufgerufen :)




UUUUUND noch eine kleine Frage:

Wie ordnet man es besser an?

ERST die Main Methode gefolgt von den kleinen Methoden?
oder
ERST die kleinen Methoden gefolgt von der Main Methode?

Was macht mehr Sinn? aus ästhetischer oder sogar praktischer Sicht?
 
Zuletzt bearbeitet:

Cygan

Mitglied
Ich habs jetzt mal mit Strings versucht. Es geht, nur ist es sinnvoll und richtig?

Gibt es eigentlich sowas wie einen universalen Datentypen, den man für solche Zwecke nutzen kann? Oder muss der Datentyp zwangsläufig IMMER spezifiziert sein?

So siehts nun aus:

Java:
    public static String beenden() {
        Scanner eingabe = new Scanner(System.in);
        System.out.println("Möchten Sie das Programm wirklich beenden?"); 
        System.out.println("<1> JA");
        System.out.println("<2> NEIN");
        int abfrage2 = eingabe.nextInt();
        if (abfrage2 == 1) {
            System.exit(0);
        }
        return "";
    }

Main Methode:
Java:
        case 4:
            beenden();
            break;
 
Zuletzt bearbeitet:

Cygan

Mitglied
Ach verdammt... da denkt man an alle, nur nich an void.... hab da null probiert, es aber fälschlicherweise mit eben dem Typ "void" verwechselt.


Ich danke euch zwei für eure überragende Hilfe. Ihr habt mich sehr viel weiter gebracht und mir vor allem die Lösung nicht sofort aufm Teller serviert --> Lerneffekt!

Ich danke euch!
 

Neue Themen


Oben