Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
schule:klassen:2017:10b:kap4 [2017/08/18 14:20] – [Aufgabe:] martin | schule:klassen:2017:10b:kap4 [2021/12/29 10:40] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== 4. Einseitige/ | ||
+ | ====Aufgabe: | ||
+ | Erstelle eine Methode tageImMonat(int monat, int jahr) , die nach Eingabe der Monatszahl (1 == Jan, 2 == Feb, …) und der Jahreszahl die Anzahl der Tage des Monats berechnet. | ||
+ | |||
+ | === Lösung ohne Beachtung von Schaltjahren === | ||
+ | <code java> | ||
+ | public class DatumsRechner | ||
+ | { | ||
+ | |||
+ | public int tageImMonat(int monat, int jahr){ | ||
+ | | ||
+ | if(monat == 2){ | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | | ||
+ | if(monat <= 7){ | ||
+ | | ||
+ | // Ist der Wert von Monat ungerade? | ||
+ | if(monat % 2 == 1){ | ||
+ | return 31; | ||
+ | } else { | ||
+ | return 30; | ||
+ | } | ||
+ | | ||
+ | } else { | ||
+ | | ||
+ | if(monat % 2 == 1){ | ||
+ | return 30; | ||
+ | } else { | ||
+ | return 31; | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | **Wichtig: | ||
+ | * '' | ||
+ | * '' | ||
+ | </ | ||
+ | |||
+ | ==== Der Modulo-Operator % ==== | ||
+ | '' | ||
+ | <code java> | ||
+ | |||
+ | 10 % 3 == 1 | ||
+ | 17 % 5 == 2 | ||
+ | 21 % 3 == 0 | ||
+ | |||
+ | usw. | ||
+ | </ | ||
+ | |||
+ | ==== Berechnung der Tage eines Monats unter Berücksichtigung von Schaltjahren ==== | ||
+ | Im {{https:// | ||
+ | - „Die durch 4 ganzzahlig teilbaren Jahre sind Schaltjahre. […] | ||
+ | - Säkularjahre, | ||
+ | - Schließlich sind die durch 400 ganzzahlig teilbaren Säkularjahre doch Schaltjahre. Damit sind z.B. 1600, 2000 und 2400 jeweils wieder Schaltjahre. […]“ | ||
+ | <code java> | ||
+ | public class DatumsRechner | ||
+ | { | ||
+ | |||
+ | public int tageImMonat(int monat, int jahr){ | ||
+ | | ||
+ | if(monat == 2){ | ||
+ | | ||
+ | if(istSchaltjahr(jahr)){ | ||
+ | return 29; | ||
+ | } else { | ||
+ | return 28; | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | | ||
+ | if(monat <= 7){ | ||
+ | | ||
+ | if(monat % 2 == 1){ | ||
+ | return 31; | ||
+ | } else { | ||
+ | return 30; | ||
+ | } | ||
+ | | ||
+ | } else { | ||
+ | | ||
+ | if(monat % 2 == 1){ | ||
+ | return 30; | ||
+ | } else { | ||
+ | return 31; | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | private boolean istSchaltjahr(int jahr){ | ||
+ | | ||
+ | // Jahreszahl ist kein Vielfaches von 4 | ||
+ | if(jahr % 4 != 0){ | ||
+ | return false; | ||
+ | } | ||
+ | | ||
+ | // Jahreszahl ist ein Vielfaches von 400 | ||
+ | if(jahr % 400 == 0){ | ||
+ | return true; | ||
+ | } | ||
+ | | ||
+ | // Jahreszahl ist ein Vielfaches von 100 | ||
+ | if(jahr % 100 == 0){ | ||
+ | return false; | ||
+ | } | ||
+ | | ||
+ | return true; | ||
+ | | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Zur Deklaration der Methode '' | ||
+ | <WRAP center round important 60%> | ||
+ | * Das Schlüsselwort '' | ||
+ | * Variablen des Datentyps '' | ||
+ | </ | ||
+ | |||
+ | |||