Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben?

4 Antworten

Von Experte MrAmazing2 bestätigt

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)
}

Loooollyyy 
Beitragsersteller
 27.05.2021, 16:06

Erstmal Dankeschön!

Muss ich nicht noch die Zahlen irgendwo im Programm eintippen und wäre das jetzt so richtig?

public static boolean schaltjahr(int jahr) {
  if (jahr % 4==0) {
      return true; }
      
  if (jahr % 4==0 && jahr % 100 !=0) (jahr % 400 ==0) {
      return true; }
      
      return false }
  }
0
ohwehohach  27.05.2021, 16:20
@Loooollyyy

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.

0

1900 ist kein Schaltjahr, 2000 ist ein Schaltjahr, 2001 ist kein Schaltjahr, 2004 ist ein Schaltjahr.

Dein Programm scheint - neben Syntaxfehlern- invertiert.

jahr%4 == 0 && jahr%100 != 0

müsste es heissen.

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

mondai  27.05.2021, 19:57

Wenn es durch 4, aber nicht durch 100 teilbar ist, dann fällt das Jahr 2000 mit weg.

0
MrAmazing2  27.05.2021, 20:36
@mondai

Das prüft er ja mit einer Seperaten if-Abfrage.

jahr%400 == 0

Wobei er die auch falsch hat, true.

1

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();
}