Java: Das nächste Schaltjahr finden?

3 Antworten

Du überprüfst aktuell nur ob das eingegebene Jahr ein Schaltjahr ist, das sollte soweit funktionieren.

Um das nächste Schaltjahr zu ermittlen würdest du eine Schleife benötigen, in der du das Jahr immer um 1 erhöhst, falls es kein Schaltjahr ist und dann nochmal prüfen. Hier sollte solange geprüft werden, bis ein Schaltjahr gefunden wurde.

Das könnte dann so aussehen:

int jahr = 2000;
while (true) {
    if (naechsteSchaltjahr(jahr)) { // "== true" ist unnötig
        print ("Das Jahr " + jahr + "ist das naechste Schaltjahr.");
        break; // schleife verlassen
    }
}

verreisterNutzer  23.12.2021, 11:34

Danke! Eine Frage. Warum hast du int jahr den Wert 2000 übermittelt? Dient das nur zur Probe?

0
mfra1999  23.12.2021, 15:48
@verreisterNutzer

Genau, das ist nur zum testen, wollte die Zeile mit der Eingabe war mir zu viel zu tippen 😁

0

verstehe irgendwie nicht das problem, was funktioniert bei dir nicht?

Ich hab das schnell so probiert:

public class Main
{
	public static void main(String[] args) {
	    int jahr = 2021; //Dein input
	    //System.out.println(jahr%4);
    	if (jahr % 4 == 0)
                      System.out.println(jahr + " ist ein schaltjahr, das nächste ist in " + (jahr+4));
              else
                  System.out.println("nächste SJ ist: "+ (jahr + (4-(jahr%4))));
  	}
  }

das if könnte man eigentlich sogar weg lassen, dient nur als "extra-text"

edit: damit mein ich, dass

System.out.println("nächste SJ ist: "+ (jahr + (4-(jahr%4))));

genügt, um das nächste schaltjahr herauszufinden


verreisterNutzer  23.12.2021, 11:44

Das Problem ist er soll das nächste Jahr herausfinden auch wenn es kein Schaltjahr ist

0

Warum rufst Du in Zeile 6 die Funktion "einfach so" auf ohne ihr Ergebnis irgendwo zu speichern oder abzufragen? Das ist meiner Ansicht nach unnötig, da Du sie ja in der IF-Anweisung in Zeile 7 ohnehin noch einmal aufrufst.