Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben?
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.
Java:
public class LeapYear {
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 }
}
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.
Da stimmt so einiges nicht.
Punkt 1: Das kompiliert nicht. Zeile 6 ist in der Form nicht kompilierfähig.
Punkt 2: Es ist fachlich falsch Was gibt die Methode bei 1900 zurück? Geh es mal zeilenweise durch.
Danke dir erstmal!
Ich weiß ich muss oben noch die Sachen schreiben, aber ich bekomme trotzdem nichts aus diesem Programm raus oder muss ich das irgendwie bearbeiten?
Also Sinn dieser Übung dürfte weniger das Nutzen irgendwelcher Klassen aus dem Java Framework als die einfache Umsetzung eines Algorithmus sein mit einfachen if Bedingungen.
Den gegebenen Code würde ich daher an Deiner Stelle erst einmal ignorieren.
Also Sinn dieser Übung dürfte weniger das Nutzen irgendwelcher Klassen aus dem Java Framework als die einfache Umsetzung eines Algorithmus sein mit einfachen if Bedingungen.
Den gegebenen Code würde ich daher an Deiner Stelle erst einmal ignorieren.
Ich habe das Jetzt so, mir fehlen aber noch die Wörter "Das Jahr", da bei mir nur bspw. "2000 ist ein Schaltjahr" rauskommt und nicht: "Das Jahr 2000 ist ein Schaltjahr", hat da vielleicht jemand ein Tipp, wo ich das noch einfügen muss?
Java:
public class LeapYear {
public static boolean istSchaltjahr( int jahr ) {
if( jahr%400 == 0 ) {
// Jahr ist durch 400 teilbar --> Schaltjahr
return true;
} // no else
if( jahr%4 == 0 ) {
// Jahr ist durch 4 teilbar --> Schaltjahr
if( jahr%100 == 0 ) {
// aber nicht, wenn das jahr auch durch 100 teilbar ist
return false;
} else {
return true;
}
} // no else
return false;
}
public static void main(String[] args) {
int jahre[] = new int[]{ 2000, 2020, 2021 };
for( int jahr : jahre ) {
if( istSchaltjahr( jahr ) ) {
System.out.println(jahr + " ist ein Schaltjahr" );
} else {
System.out.println(jahr + " ist kein Schaltjahr" );
}
}
}
}
Ich möchte noch anmerken, dass deine ursprüngliche Lösung aus dem ersten Beitrag fast richtig gewesen wäre und auch deutlich besser lesbar als deine aktuelle Lösung
Java:
public static boolean schaltjahr(int jahr) {
if (jahr % 400 == 0) { // hier 400 anstatt 4
return true;
}
if (jahr % 4 == 0 && jahr % 100 != 0) { // hier die zweite Klammer entfernen
return true;
}
return false;
}
Und hier noch die Angeberversion
Java:
public static boolean schaltjahr(final int jahr) {
return (jahr % 400 == 0) || (jahr % 4 == 0 && jahr % 100 != 0);
}
Erklärung: Da die Auswertung in der if-Abfrage genau dem gewünschten Rückgabewert entspricht, kann man direkt das Ergebnis der Auswertung zurückgeben.
Java:
if (jahr % 400 == 0) {
return true;
}
// bedeutet im Prinzip
if (true) { // wenn das Ergebnis der Bedingung wahr ist, dann gib wahr zurück
return true;
}
// was diesem entspricht
return jahr % 400 == 0;
// Es fehlt nur noch die zweite Bedingung verknüpft mit einem ODER