Switch Case

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Habe eine verschachtelte switch Case Anweisung gemacht. Zum Beispeil bei case :1 untergliedert sich eine neue Auswahl mit case 1: case 2: und so weiter. Wie schaffe ich es in die Abfrage beim Ausführen des Programms wnn ich im zweiten switch Konstrukt bin wiede rin den ersten zu springen. Danke.
 
am besten erklärst du erst einmal deine situation und dann kann man sich schon eher überlegen was du wilst... und wie man das ganze lösen kann...

zu dem was du geschrieben hast würde ich eine schleife um die case anweisung machen, einen boolean wert einbauen wie z. B:
Code:
boolean boolCase2selected = false;
und sobald du in die switch rein kommst fragst du

Code:
if (boolCase2selected){
} else {
}
 
Code:
System.out.println("Die Objekteverwaltung von Grafiken");
		System.out.println("=================================="+
				           "==================================");
		System.out.println("\nHauptmenue");
		System.out.println("\n(1) Neues Objekte hinzufuegen");
		System.out.println("(2) Objekte anzeigen");
		System.out.println("(3) Objekte suchen");
		System.out.println("(4) Objekt loeschen");
		System.out.println("(5) Objekte filtern");
		System.out.println("\n(0) Programm beenden");
		try{
			System.out.println("\nAuswahl: ");
			Scanner eingabe=new Scanner(System.in);
			int auswahl=eingabe.nextInt();
			switch(auswahl){
			
            //	Fall 1 Legt neues Objekt an 
			
			case 1: System.out.println("\nGrafisches Objekt anlegen:");
			        System.out.println("Bitte wählen Sie aus: ");
			        System.out.println("\n(1)   für Point");
			        System.out.println("(2)   für Linie");
			        System.out.println("(3)   für Sphere");
			        System.out.println("(4)   für Triangle");
			        System.out.println("(5)   vollstaendige Liste");
		           	System.out.println("\n(6) Zurück zum Hauptmenue");
		           	try{
			        Scanner eingabe1=new Scanner(System.in);
			        int auswahl1=eingabe.nextInt();
			        switch(auswahl1){
			        case 1: 
			        	c.add(point);
			        	System.out.println("Point wurde hinzugefuegt");
			        	System.out.println(c);
			        	break;
			        case 2:
			        	c.add(linie);
			        	System.out.println("Linie wurde hinzugefuegt");
			        	System.out.println(c);
			        	break;
			        case 3:
			        	c.add(sphere);
			        	System.out.println("Sphere wurde hinzugefuegt");
			        	System.out.println(c);
			        	break;
			        case 4:
			        	c.add(triangle);
			        	System.out.println("Triangle wurde hinzugefuegt");
			        	System.out.println(c);
			        	break;
			        	    
			        case 5: try{
			        	    FileOutputStream fos = new FileOutputStream("test.txt");
					        ObjectOutputStream oos = new ObjectOutputStream(fos);
					        oos.writeObject((ArrayList) c);
			        		System.out.println(c);
						    						
						    System.out.println("ArrayList wurde in Datei gespeichert");
						    oos.close();
						    }
			        catch(IOException e){
						e.printStackTrace();
					}
			        	break;
			        case 6: // ???????????
			        	break;
			        }
		           	}
			        catch(Exception e){
			        	e.printStackTrace();

Das habe ich vor 😉
 
im Case 6 unten wo dir Frage zeichen sind möchte ich wenn der Fall Eintritt das das Programm wieder gestertet wird oder wenn das nicht geht ich wieder zum ersten Menü komme
 
du könntest einen default einbauen, der dir dieses übernimmt. ich bin mir nicht sicher, aber vielleicht wäre es unter umständen an dieser stelle sinnvoller einen if-else zu nuten, oder das ganze extern neu aufzurufen.
 
in Programmen dieser Welt wird nicht gesprungen,
wenn du irgendwas wiederholt ausführen willst, dann mache z.B. eine Schleife drumherun,

wenn du zurück zum Schleifenanfang willst, dann bedeutet das, dass in diesem Schleifendurchlauf nix mehr gemacht werden soll,
und du mit dem nächsten Schleifendurchlauf wieder anfängst,

je nachdem, was bis zum Schleifenende noch für Aktionen ausgeführt werden,
musst du in deinem case 6 evtl. eine boolean-Variable tueNixMehrInDieserSchleife auf true setzen
und dies bei weiteren Aktionen berücksichtigen,

wenn nach case 6 praktisch nix mehr kommt, dann musst du nix mehr tun,

andererseits musst du nun wahrscheinlich dafür sorgen, dass in allen anderen Fällen die Schleife nicht wiederholt wird?
 
Grundsätzlich sind verschachtelte switch-cases ein gutes Mittel, um "unmaintainable code" zu schreiben. Schreib' den ganzen Block, der beim äußeren case 1: steht, in eine eigene Methode. Dann ist es schonmal übersichtlicher, und das konkrete Problem wirst du (so oder so, aber mit einer eigenen Methode vielleicht einfacher) lösen können.
 
Die anderen haben Recht. Das sähe dann so aus:

Code:
boolean done=false;

while (!done) {
   done = true;

   ... Deine code ...

         case 6:
            done = false;
            break;
}
 
jawohl danke super funzt 😉 hach bin ich froh das es dieses forum gibt 😉
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben