From ad0b5d4d054acd4dbe28d27ce0e3358c513edf4b Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Mon, 20 Apr 2020 11:15:52 +0200 Subject: [PATCH] =?UTF-8?q?Aufgabe=20gel=C3=B6st?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/geburtstag/Geburtstag.java | 63 +++++++++++++++++++++++++++++----- 1 file changed, 54 insertions(+), 9 deletions(-) diff --git a/src/geburtstag/Geburtstag.java b/src/geburtstag/Geburtstag.java index 66a72a2..9d5066e 100644 --- a/src/geburtstag/Geburtstag.java +++ b/src/geburtstag/Geburtstag.java @@ -1,13 +1,14 @@ package geburtstag; - - /* Aufgabe a): hier bitte die notwendigen imports ergänzen! */ +import java.time.DateTimeException; +import java.time.LocalDateTime; +import java.util.Scanner; public class Geburtstag { @@ -15,11 +16,10 @@ public class Geburtstag { public static void main(String[] args) { LocalDateTime myBirthday = null; - LocalDateTime jetzt=null; + LocalDateTime jetzt = null; myBirthday = setMyBirthday(); - System.out.println("Mein Geburtsdatum mit Geburtszeit ist:"); System.out.println(myBirthday); @@ -31,7 +31,7 @@ public class Geburtstag { */ - + jetzt = LocalDateTime.now(); System.out.println("Jetzt ist:"); System.out.println(jetzt); @@ -41,7 +41,7 @@ public class Geburtstag { /* Die setMyBirthday-Methode */ public static LocalDateTime setMyBirthday() { - Scanner myInput = null; + Scanner myInput = new Scanner(System.in); LocalDateTime tempDateTime = null; /* Aufgabe b) @@ -52,13 +52,58 @@ public class Geburtstag { */ + String eingabeDatum = ""; + boolean eingabeKorrekt = false; + + while (!eingabeKorrekt) { + System.out.println("Bitte geben Sie Ihren Geburtstag ein. (tt.mm.jjjj)"); + eingabeDatum = myInput.nextLine(); + if (eingabeDatum.matches("((0?[1-9])|([1-3][0-9])).(0?[0-9]|1[1-2]).[1-2][0-9][0-9][0-9]")) { + eingabeKorrekt = true; + } else { + System.err.println("Bitte beachten Sie das Eingabeformat!"); + } + } + + String[] datum = eingabeDatum.split("[.]"); + + eingabeKorrekt = false; + String eingabeZeit = ""; + + while (!eingabeKorrekt) { + System.out.println("Bitte geben Sie Ihre Geburts-Zeit ein. (hh:mm)"); + eingabeZeit = myInput.nextLine(); + if (eingabeZeit.matches("((1[0-9])|(2[0-3])|(0?[0-9])):(([1-5][0-9])|(0?[0-9])|60)")) { + eingabeKorrekt = true; + } else { + System.err.println("Bitte beachten Sie das Eingabeformat!"); + } + } + + String[] zeit = eingabeZeit.split("[:]"); + + int jahr = Integer.parseInt(datum[2]); + int monat = Integer.parseInt(datum[1]); + int tag = Integer.parseInt(datum[0]); + int stunde = Integer.parseInt(zeit[0]); + int minute = Integer.parseInt(zeit[1]); + + try { + return LocalDateTime.of(jahr, monat, tag, stunde, minute); + } catch (DateTimeException dte) { + System.err.println("Das Format Ihrer Eingabe ist fehlerhaft."); + System.out.println("Ihre Eingabe:"); + System.out.println(eingabeDatum); + System.out.println(eingabeZeit); + System.out.println(); + return null; + } /* Aufgabe d) wenn z.B. der Wert für den Monat mit 13 eingegeben wird, bricht das Programm mit einer Exception ab, wie heisst diese? - - + -> DateTimeException Die Aufgaben e) bis g) sind in verschiedenen Varianten zu programmiere! @@ -79,8 +124,8 @@ public class Geburtstag { */ - return tempDateTime; } + } \ No newline at end of file