From b06ede766fc1f1a88f9d9e9c1d738b08c47e8dbb Mon Sep 17 00:00:00 2001 From: Luca Conte Date: Thu, 24 Nov 2022 16:06:49 +0100 Subject: [PATCH] u23 --- uebungen/u23/Jahreszeit.class | Bin 0 -> 2884 bytes uebungen/u23/Jahreszeit.java | 136 ++++++++++++++++++++++++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 uebungen/u23/Jahreszeit.class create mode 100644 uebungen/u23/Jahreszeit.java diff --git a/uebungen/u23/Jahreszeit.class b/uebungen/u23/Jahreszeit.class new file mode 100644 index 0000000000000000000000000000000000000000..56386c7d5312dfdbe8661eba6c40324f5a2a63bc GIT binary patch literal 2884 zcmaJ?TUQ&`75)yoj3fpl%LZ)3MNUX6gb~fX3D_wRE=nZfAQFs8(~iW6G)9_HM?wlFm8%oV~w&-}A3;zxpSD zSMY}zp2Cub*}}@!40+Vs^z^1eiG&WzFK~&ZhjVlp@?z>6}9h0Al3ds1XT?+4W__AVWYUXRmv}} z6xUXY0)4wVf%xj?J1gt?Tyd?mSX^B!t_kR+jY45%^MqVq*<31ZosiqP;#T)HykJ_U zdsQHio_<##xNPr9fx*0K$zr=vmd=(@uJb0?FicBeIK7*{Y1}gA>V{RFE4hwoRp*tU zerVL{E2dSKElIv~+GlIKW__+yF)T|u^QTDCgMpH3RQ3x-)6=BkrocG`ma{ggLv}GU zr(x!Dr=yOPW!;ozvnpF}7;d}Kg&8>wW?IE^V6T@`!<4{Tv*oU}W!*gi5(uSpx#=4W zy~my-gJa89OF9BtdN;T0JtoSs<(iF#eAB2ovUMm;*Na|m`bm2QA`6vzCl9fb-F7N+ z)l^X*>`G@<*mX=JL#w3%}h=%nXW5Sk_C~f8rGpq-C%MQU6o~NWf_Mh+jd*7 zV>AoWt=W66!7vUZ_)y13_*lmrekd?rG%GbXWj0b(`GM{1Nyn8|YDqeh_rwTn8C4xG z;6;YFU|WW(<0WPOt9VTyyi#XjVT>zwajBdAiQl_ zu5@(#KqWD}E}e3Vkk5Kl$!1#k_Kc#UtIpRCY7Bl=Al8jGz3N70qkL0Vn7*DXzw*C( zbl|D%9I@R#_6Q531P zm=)8nr36MA#=cy(t%~7pn{JJ#mTOpUt2-2WZDcDw*$^5&RmJlgfvIj5OzW1tFFP~G z$6qxnuI(IX_#Km+x9$CQlanZ?hRt%_U`tZzpLzq+!SL&J-LUpJuBLp!Q>IgoVc!wl zI%vvM*n20VUo!K(zI7m$je5Ogx^iB_?**QD!oSmO6PWmZK7J`K@p}b?a8dOFPZw2v zdpoP%+t~}=&Nks5gHXeS>kO%J?t*(L^CiR=JP2Io8ul*3h+-C5o)zn>2=IGH1^+588rD=>(D#Bl*<3BzH~foTvV$k%ZtdmquveZ&fvkI{d( z$eY9ff$lu~51DlepXJ);Su{$UfKg~j@@||j6G&i^H<$1nUxvx|kP-n6eHxzU4?-hn zR1KGo>V29OBJXpv$+53+1}J7`k1_aia44AkE22ZevClE2jEK{S&eNTT{~ik7rBJUK zGlacNWwRJ#c&6xGmPRNuA_#ngxae0tbC7iuuhL`X^HZ5%d@^zN7>Na*^u#%yu7n=M zb^>D?JHg~earPd${1hZSi3R5C3eMvyQh1%1ob4UV8=Z7KojJz&{7fJ_6U-iC=r1^@ zJQ!9UsE0cb|2v~Vee;Js|KH-8X9No@mLlVK%`-iUzHboH@S`O4aQ=4m6ljM^`=!w! zV>BAqKSwBVH%a15@(3fN!M&_^(-R~={ns&o9cF0PLk}a^F9ta=)S&J_zklKatq)}X zhEVWs#yfh5nV|CNaqtP20I)|O$@;1?HZ>-{PDKs6()5&t5a^G^$ilB+N7sjRLKXTe zN4UViT>LY_iP3vUNIoLQNQ^%sCP+*^B2xFrc@n~B2@4!BFNbvSBaGl<7U3tXf=~I? z`HcF1&4T;wBc}&+U1wFie$sJYczFf>7}r(ekYCZk&saU1q$7-LiT|zt0gtYHi~s-t literal 0 HcmV?d00001 diff --git a/uebungen/u23/Jahreszeit.java b/uebungen/u23/Jahreszeit.java new file mode 100644 index 0000000..89b26cb --- /dev/null +++ b/uebungen/u23/Jahreszeit.java @@ -0,0 +1,136 @@ +import java.util.Scanner; + +/** + * Klasse zum errechnen der Jahreszeit eines eingegebenen Datums + */ +public class Jahreszeit { + + public static final int[] MONATSLAENGEN = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; + public static final int[] FRUEHLINGSANFANG = {3, 20}; + public static final int[] SOMMERANFANG = {6, 21}; + public static final int[] HERBSTANFANG = {9, 22}; + public static final int[] WINTERANFANG = {12, 21}; + + public static void main(String[] args) { + Scanner console = new Scanner(System.in); + System.out.println(bestimmeJahreszeit(datumEinlesen(console))); + } + + /** + * Liest nach ausgabe einer Eingabeaufforderung eine Zahl ein + * Bei ungueltiger Eingabe wird so lange wiederholt, bis eine + * guelige Eingabe erfolgt + */ + public static int zahlEinlesen(Scanner console, String prompt) { + while (true) { + System.out.print(prompt); + String eingabe = console.nextLine(); + try { + return Integer.parseInt(eingabe); + } catch (NumberFormatException e) { + System.out.println("Bitte eine ganze Zahl eingeben."); + } + } + } + + /** + * Liest mittels zahlEinlesen eine Zahl innerhalb eines durch + * min und max definierten bereiches ein + * Bei ungueltiger Eingabe wird so lange wiederholt, bis eine + * gueltige Eingabe erfolgt. + */ + public static int zahlInRangeEinlesen(Scanner console, int min, int max, String prompt) { + prompt = prompt + " (" + min + "-" + max + "): "; + int eingabe = zahlEinlesen(console, prompt); + while (eingabe < min || eingabe > max) { + System.out.println("Nicht im geforderten Bereich."); + eingabe = zahlEinlesen(console, prompt); + } + return eingabe; + } + + /** + * Liest ein beliebeiges Datum durch abfrage von Tag + * und Monat von der Konsole ein ohne Ueberpruefung + * auf Gueltigkeit des Datums + * Rueckgabe des Datums erfolgt durch ein Integer Array + * des Formates: {Monat, Tag} + */ + public static int[] beliebigesDatumEinlesen(Scanner console) { + int tag = zahlInRangeEinlesen(console, 1, 31, "Tag"); + int monat = zahlInRangeEinlesen(console, 1, 12, "Monat"); + int[] datum = {monat, tag}; + return datum; + } + + /** + * Liest ein Datum durch abfrage von Tag und Monat von der + * Konsole ein + * Bei eingabe eines ungueltigen datums wird die Abfrage + * wiederholt bis ein gueltiges Datum eingegeben wird + * Rueckgabe des Datums erfolgt durch ein Integer Array + * des Formats: {Monat, Tag} + */ + public static int[] datumEinlesen(Scanner console) { + int[] datum = beliebigesDatumEinlesen(console); + while (!istGueltigesDatum(datum[0], datum[1])) { + System.out.println("Datum ist ungültig. Wiederholen"); + datum = beliebigesDatumEinlesen(console); + } + return datum; + } + + /** + * Ueberprueft ob ein durch monat und tag gegebenes Datum + * Im gueltigen Bereich liegt + */ + public static boolean istGueltigesDatum(int monat, int tag) { + if (monat < 1 || monat > 12) return false; + if (tag < 1 || tag > MONATSLAENGEN[monat - 1]) return false; + + return true; + } + + /** + * Vergleicht zwei Daten und gibt zurueck ob datum2 groesser oder + * gleich datum1 ist + * datum1 und datum2 sind Interger Arrays im Format: {Monat, Tag} + */ + public static boolean datumIstGroesser(int[] datum1, int[] datum2) { + if (datum1[0] < datum2[0]) { // ist datum1 Monat < datum2 Monat + return true; + + } else if (datum1[0] > datum2[0]) { // ist datum1 Monat > datum2 Monat + return false; + + } else { // datum1 Monat und datum2 Monat sind gleich + + if (datum1[1] > datum2[1]) { // ist datum1 Tag > datum2 Tag + return false; + } + + return true; + } + } + + /** + * Bestimmt die Jahreszeit eines Datums + * datum ist ein Integer Array im Format: {Monat, Tag} + */ + public static String bestimmeJahreszeit(int[] datum) { + if (datumIstGroesser(WINTERANFANG, datum)) { + return "Winter"; + } + if (datumIstGroesser(HERBSTANFANG, datum)) { + return "Herbst"; + } + if (datumIstGroesser(SOMMERANFANG, datum)) { + return "Sommer"; + } + if (datumIstGroesser(FRUEHLINGSANFANG, datum)) { + return "Frühling"; + } + return "Winter"; + } + +}