0 Daumen
890 Aufrufe

Aufgabe:

Schreiben Sie eine Klasse Datum mit einer Klassenmethode istSchaltjahr. Die Methode soll als Argument eine positive (was nicht zu überprüfen ist) ganze Jahreszahl annehmen. Sie soll einen Wahrheitswert zurückgeben, der angibt, ob das entsprechende Jahr ein Schaltjahr, wenn die Jahreszahl durch 4 teilbar war.

Vor 1583 (Julianischer Kalender) war ein Jahr ein Schaltjahr, wenn die Jahreszahl durch 4 teilbar war.

Seit 1583 (Gregorianischer Kalender) ist ein Jahr ein Schaltjahr, wenn die Jahreszahl

1). durch 4 teilbar ist,

2.) aber nicht durch 4 teilbar ist,

3.) außer, wenn sie auch durch 400 teilbar ist ( 2000 war ein Schaltjahr)


Hinweis: Verwenden Sie den Modulo-Operator, um Teilbarkeit zu prüfen.

Schreiben Sie sich zur Hilfe ein Testprogramm, das die Methode mit verschieden Jahreswerten aufruft und die Ergebnisse ausgibt.

Probieren Sie verschiedene Möglichkeiten der Implementierung aus:

a) nur mittels if-else

b) nur mittels logischer Operatoren

c) als Mischform

Avatar von

1 Antwort

0 Daumen

Vor 1583 (Julianischer Kalender) gilt:
Jahr ist Schaltjahr, wenn die Jahreszahl durch 4 teilbar ist.

Seit 1583 (Gregorianischer Kalender) gilt:
1. Die Jahreszahl ist durch 4 teilbar.
2. Ist sie jedoch durch 100 teilbar ist es kein Schaltjahr.
3. Wenn die Jahreszahl durch 400 teilbar ist, handelt es sich trotzdem um ein Schaltjahr.

Und der Code dazu:

public class Datum {

public static boolean isSchaltjahrIfElse(int jahr) {
// Julianischer Kalender
if (jahr < 1583) {
if (jahr % 4 == 0) {
return true;
}
}

// Gregorianischer Kalender
else {
if (jahr % 4 == 0) {
if (jahr % 100 == 0) {
if (jahr % 400 == 0) {
return true; // durch 4 teilbar, nicht durch 100 aber durch 400
}
}
// durch 4 teilbar aber nicht durch 100
else {
return true;
}
}
}
return false;
}

public static boolean isSchaltjahrLogischeOperatoren(int jahr) {
return (jahr < 1583 && jahr % 4 == 0) // Julianischer Kalender
|| ((jahr % 4 == 0 && !(jahr % 100 == 0)) || (jahr % 400 == 0)); // Gregorianischer Kalender
}

public static boolean isSchaltjahrMischform(int jahr) {
// Julianischer Kalender
if (jahr < 1583) {
return jahr % 4 == 0;
}

// Gregorianischer Kalender
else {
return ((jahr % 4 == 0 && !(jahr % 100 == 0)) || (jahr % 400 == 0));
}
}

// Testen
public static void main(String[] args) {
System.out.println("Nur mittels if-else:");
System.out.println("Vor 1583 (Julianischer Kalender):");
System.out.println("1404 = " + Datum.isSchaltjahrIfElse(1404));
System.out.println("1501 = " + Datum.isSchaltjahrIfElse(1501));
System.out.println("Seit 1583 (Gregorianischer Kalender):");
System.out.println("2004 = " + Datum.isSchaltjahrIfElse(2004));
System.out.println("1655 = " + Datum.isSchaltjahrIfElse(1655));
System.out.println("2000 = " + Datum.isSchaltjahrIfElse(2000));
System.out.println("1800 = " + Datum.isSchaltjahrIfElse(1800));

System.out.println();

System.out.println("Nur mittels logischer Operatoren:");
System.out.println("Vor 1583 (Julianischer Kalender):");
System.out.println("1404 = " + Datum.isSchaltjahrLogischeOperatoren(1404));
System.out.println("1501 = " + Datum.isSchaltjahrLogischeOperatoren(1501));
System.out.println("Seit 1583 (Gregorianischer Kalender):");
System.out.println("2004 = " + Datum.isSchaltjahrLogischeOperatoren(2004));
System.out.println("1655 = " + Datum.isSchaltjahrLogischeOperatoren(1655));
System.out.println("2000 = " + Datum.isSchaltjahrLogischeOperatoren(2000));
System.out.println("1800 = " + Datum.isSchaltjahrLogischeOperatoren(1800));

System.out.println();

System.out.println("Als Mischform :");
System.out.println("Vor 1583 (Julianischer Kalender):");
System.out.println("1404 = " + Datum.isSchaltjahrMischform(1404));
System.out.println("1501 = " + Datum.isSchaltjahrMischform(1501));
System.out.println("Seit 1583 (Gregorianischer Kalender):");
System.out.println("2004 = " + Datum.isSchaltjahrMischform(2004));
System.out.println("1655 = " + Datum.isSchaltjahrMischform(1655));
System.out.println("2000 = " + Datum.isSchaltjahrMischform(2000));
System.out.println("1800 = " + Datum.isSchaltjahrMischform(1800));
}
}

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community