Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben?
Hii
ich soll ein Programm schreiben, das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht.
Bitte Jahreszahl eingeben. 2000
oder
Bitte Jahreszahl eingeben. 2021
Ein Jahr sei ein Schaltjahr, wenn die Jahreszahl durch 400 teilbar ist. Oder wenn es durch 4, aber nicht durch 100 teilbar ist. Das Programm gibt aus, ob das eingegebene Jahr ein Schaltjahr ist. Zum Beispiel:
Das Jahr 2000 ist ein Schaltjahr.
oder
Das Jahr 2021 ist kein Schaltjahr.
Ich habe schon angefangen, weiß allerdings, ob das was ich gemacht habe richtig ist, weshalb ich mich für ein paar Tipps freuen würde und wo ich die Zahlen einsetzen soll.
public static boolean schaltjahr(int jahr) {
if (jahr % 4 !=0) {
return true; }
if (jahr % 100==0 && jahr % 400!=0) {
rturn true; }
return false }
}
Das soll dabei rauskommen:
Was wird getestet? Eingabe Resultat
LeapYear.main(null); 2000 Bitte Jahreszahl
eingeben. Das Jahr 2000
ist ein Schaltjahr.
LeapYear.main(null); 2020 Bitte Jahreszahl
eingeben. Das Jahr 2020
ist ein Schaltjahr.
LeapYear.main(null); 2021 Bitte Jahreszahl
eingeben. Das Jahr 2021
ist kein Schaltjahr.
4 Antworten
![](https://images.gutefrage.net/media/user/ohwehohach/1484229011333_nmmslarge__192_3_203_203_916b80d33227bc2c78789585f46b3253.jpg?v=1484229011000)
Deine Bedingungen stimmen nicht mit den Vorgaben überein. Du prüfst, ob das Jahr nicht durch 4 teilbar ist und sagst dann es ist ein Schaltjahr.
Wenn das nicht zutrifft, prüfst Du, ob das jahr durch 100 aber nicht durch 400 teilbar ist.
Das ist ja nicht passend zu dem, was Du machen sollst.
Folgendermaßen müsste das aussehen, was Deinen Vorgaben entspricht
public static boolean schaltjahr(int jahr) {
return (jahr % 4 == 0 && jahr % 100 != 0) || (jahr % 400 == 0)
}
![](https://images.gutefrage.net/media/user/ohwehohach/1484229011333_nmmslarge__192_3_203_203_916b80d33227bc2c78789585f46b3253.jpg?v=1484229011000)
Nein, das ist so nicht richtig.
Und wenn Du ein funktionierendes Programm haben willst, ja, dann brauchst Du auch irgendwo (beispielsweise in der Main-Methode) eine Möglichkeit der Eingabe einer Zahl und dann einen Aufruf Deiner Funktion mit Ausgabe des Ergebnisses.
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
1900 ist kein Schaltjahr, 2000 ist ein Schaltjahr, 2001 ist kein Schaltjahr, 2004 ist ein Schaltjahr.
Dein Programm scheint - neben Syntaxfehlern- invertiert.
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
jahr%4 == 0 && jahr%100 != 0
müsste es heissen.
![](https://images.gutefrage.net/media/user/mondai/1444745824_nmmslarge.jpg?v=1444745824000)
Wenn es durch 4, aber nicht durch 100 teilbar ist, dann fällt das Jahr 2000 mit weg.
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Das prüft er ja mit einer Seperaten if-Abfrage.
jahr%400 == 0
Wobei er die auch falsch hat, true.
![](https://images.gutefrage.net/media/user/mondai/1444745824_nmmslarge.jpg?v=1444745824000)
So stimmt es, wie in der Liste von dieser Seite angegeben wurde.
while( true ){
Out("Jahr:");
In4( Jahr );
if ( Jahr%4 ==0){
if ( Jahr%100==0
&& Jahr%400!=0){Out(Jahr.ToText()+"ist kein Schaltjahr");
continue; }Out(Jahr.ToText()+"ist ein Schaltjahr");
} OutEnd();
}
Erstmal Dankeschön!
Muss ich nicht noch die Zahlen irgendwo im Programm eintippen und wäre das jetzt so richtig?