u23
This commit is contained in:
parent
13ec245d10
commit
b06ede766f
Binary file not shown.
|
@ -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";
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue