break/continue in einer if-Abfrage?

hrumsch

Mitglied
Hallo zusammen!

Also ich bin, wie sollte es anders sein, Java-Anfänger und komme an einer Stelle nicht weiter. Ich möchte gerne einen Weihnachtskalender schreiben. Ich habe schon das akutelle Systemdatum (tag) mit der Tageseingabe (Tuerchen) des Users verglichen. Dann habe ich auch schon hinbekommen, dass die Tuerchen-Eingabe nicht größer als 24 sein darf, genauso wie die Tuerchen-Eingabe nur kleiner als der wirkliche Tag sein darf.
Nur möchte ich jetzt noch folgende drei Dingen einfügen, wo ich allerdings keine Ahnung habe, wie ich das noch mit einbauen soll:

1. Der Wert Tuerchen darf nicht kleiner als 0 sein (ein negativer Tag ist ja Quatsch)
2. Wenn man 0 eingibt, soll das Programm beendet werden (ich dachte da an break, aber wie kriege ich das hier unter?)
3. Wenn der Wert größer als 24 ist, solll die Aufforderung zur erneuten "Tuerchen-Eingabe" kommen (hier dachte ich an continue, aber selbes Problem wie bei 2.)

Hier ein Ausschnitt von dem, was ich habe:
Java:
if(Tuerchen<=24){
	
			if(tag < Tuerchen){
			System.out.println("Türchen lässt sich noch nicht öffnen, denn heute ist erst der " + tag + ". Dezember");
			}	
			
			else {
			System.out.println("Türchen wird geöffnet für den " + Tuerchen + ". Dezember");
			}
		}
 
Zuletzt bearbeitet von einem Moderator:
1. if-Bedingung zum Ausschluss negativer Zahlen koennte so aussehen: (Tuerchen >= 0)

2. ein break kannst du nach meinem Wissensstand nicht in eine if-else-Anweisung einfügen, sondern in eine Schleife oder switch-Anweisung

3. siehe 2. continue verhält sich genauso, um eine erneute Eingabe zu machen, sofern die vorherige falsch war könntest du die Eingabe in eine Schleife packen, sodass es zum Anfang zurückspringt und du die Eingabe wiederholen kanns

Ich hoffe ich konnte helfen 😉
 
ZU 2) um das Programm abzubrechen könntest du soetwas verwenden: System.exit(0)
allerdings gibt es da schönere methoden wie die JOptionPane...
ZU1) wie oben benannt prüfe ob Tage >=0

ZU3) selbe wie 2 prüge einfach z.B mit if ob der Wert >= 24 und dann halt deine Anweisung ;-)
 
Mit System.exit wollte ich zeigen wie sie das Programm beenden lassen kann was ja auch die Feage war .... Dann habe ich noch hinzugefügt dass es auch schönere Methoden als ein Programm abzubrechen gibt z.B köntte man ja ein joptionpane machen.... Das war mein Gedanke
Klar geworden ??
 
Also das mit dem System.exit() hat funktioniert, bleibt nur noch das mit dem continue.

Das Problem ist, dass ich für die Eingabe das hier geschrieben habe: "int Tuerchen = input.nextInt();". Mit dem Tuerchen mache ich dann die if-Anweisung, wie oben gepostet. Das Problem ist jetzt aber natürlich, dass ich das Tuerchen als int nicht nochmal benutzen darf, was bedeutet, dass ich es auch nicht in die Schleife einbauen kann.
Wenn ich es dann umbennenen würde, in z.B. Tuerchen1, dann müsste ich ja wieder die selbe if-Anweisung mit dem Tuerchen1 machen. Je nachdem, wie oft der Benutzer den Vorgang wiederholenn will, muss praktisch unendlich viele Tuerchenxy machen...🙁
 
Achja: Ich möchte mich hier nicht auf continue versteifen, ist halt das einzige, was ich so kenne. Wenn es da noch was anderes gibt, dann her damit. Continue geht ja meines Wissens nur mit Schleifen und das hat (soweit ich es kenne) immer mit einer Inkrementierung zutun, was ich aber hier nicht brauche.
 
Mir nicht, den Zusammenhang verstehe ich nicht 🙂
Hättest du eine Alternative aufgeführt, die zum Programmabbruch (z.B. eine RuntimeException werfen, oder ein return; etc.) wäre das verständlicher, aber die Aufgabe eines JOptionPanes ist doch eine ganz andere?!

Ich meinte nur das er das programm ja nicht direkt abbrechen lassen muss sondern auch eine jOptionPane einbauen könnte einfach weil es schöner ist so ein Fenster zu bekommen als das ganze Programm abstürzen zu lassen =)
 
Hat wirklich keiner eine Lösung parat?:shock:

Hier einmal das wichtigste vom Programm:

Java:
System.out.println("Welches Türchen soll geöffnet werden (beenden mit 0)?");
		int Tuerchen = input.nextInt();
		
		
					
		if(Tuerchen == 0){
			System.exit(0);
			System.out.println("Programm wurde beendet.");
		}
		
		if(Tuerchen <= 24){
			
			if(Tuerchen>0){
	
				if(day < Tuerchen){
					System.out.println("Türchen lässt sich noch nicht öffnen, denn heute ist erst der " + day + ". Dezember");
				}	
				else {
					System.out.println("Türchen wird geöffnet für den " + Tuerchen + ". Dezember");
				}
			}
			else{
				System.out.println("Ungültige Eingabe, welches Türchen soll geöffnet werden (beenden mit 0)?");
			}
			
		}
		else{
			System.out.println("Ungültige Eingabe, welches Türchen soll geöffnet werden (beenden mit 0)?");
		}



Jedes mal, wenn da steht "Ungültige Eingabe, welches Türchen soll geöffnet werden (beenden mit 0)?", soll das Programm wieder ganz an den Anfang (int Tuerchen = input.nextInt(); ). Input ist der Name des "Scanners"...
Wäre super, wenn mir da noch geholfen werden könnte, dann wäre es nämlich perfekt. 🙂
 
Wenn du etwas wiederholen musst, dann brauchst du eine Schleife (oder Rekursion), mit if-Abfragen allein bekommst du sowas nicht hin. Da du nicht weißt wie oft wiederholt werden muss bietet sich eine while bzw. do...while-Schleife eher an als eine for-Schleife (wobei es damit natürlich auch möglich wäre).
 
Java:
boolean again = true;
do {
    System.out.println("Welches Türchen soll geöffnet werden (beenden mit 0)?");
    int tuerchen = input.nextInt();
    
    if(tuerchen == 0) {
        System.out.println("Programm wurde beendet.");
        System.exit(0);
    }
    
    if(0 < tuerchen && tuerchen <= 24) {
        if(day < tuerchen) {
            System.out.println("Türchen lässt sich noch nicht öffnen, denn heute ist erst der " + day + ". Dezember");
        } else {
            System.out.println("Türchen wird geöffnet für den " + tuerchen + ". Dezember");
        }
        again = false;
    } else {
        System.out.println("Ungültige Eingabe");
    }
} while(again);
 

Neue Themen


Zurück
Oben