CodeGym
Promotion
CodeGym University
Lernen
Kurs
Aufgaben
Umfragen & Quizze
Spiele
Hilfe
Zeitplan für einen Tritt in den Hintern
Community
Benutzer
Forum
Chat
Artikel
Erfolgsstorys
Aktivität
Rezensionen
Abonnements
Helles Design
Frage
  • Rezensionen
  • Über uns
Start
Jetzt lernen
Jetzt lernen
  • Alle Fragen
hidden #10625598
Level 23
  • 08.07.2020
  • 344Aufrufe
  • 9Kommentare

wie funktioniert das hier mit dem datum?

Frage zur Aufgabe Max Mustermann
Java Core,  Level 9,  Lektion 11
In der Diskussion


Der erste Parameter der main-Methode ist ein Dateiname.
Jede Zeile der angegebenen Datei hat das folgende Format:
Name Monat Tag Jahr
[Name] ist ein String, der mehrere durch Leerzeichen getrennte Wörter enthalten kann.
[Monat] ist ein int, [Tag] ist ein int und [Jahr] ist ein int.
Die Daten werden durch Leerzeichen getrennt.

Befülle die PEOPLE-Liste mit den Daten aus der Datei.
Schließe die Streams.

Beispiel-Eingabedatei:
Max Moritz Mustermann 12 31 1987
Vincent 5 15 2013

Anforderungen:
  • Die Solution-Klasse muss die Konstante public List<Person> PEOPLE besitzen, die sofort initialisiert werden muss.
  • Das Programm darf KEINE Daten von der Konsole lesen.
  • Das Programm muss den Inhalt der Datei lesen (verwende FileReader).
  • Der Dateieingabedatenstrom (FileReader) muss geschlossen werden.
  • Das Programm muss die PEOPLE-Liste mit Daten aus der Datei befüllen.
  • Das Programm muss korrekt mit Namen mit Bindestrich umgehen, wie z.B. Ann-Kathrin.
package de.codegym.task.task19.task1921; import java.util.ArrayList; import java.util.List; import java.io.*; /* Max Mustermann */ public class Solution { public static final List<Person> PEOPLE = new ArrayList<>(); public static void main(String[] args) throws IOException { String filename = args[0]; try(BufferedReader reader = new BufferedReader(new FileReader(filename));){ while(reader.ready()){ String data = reader.readLine().split("\\s+"); Date date = data.get(MM dd yyyy)???? PEOPLE.add(data + date); } } catch(FileNotFoundException e){} } }
0
Kommentare (9)
  • Beliebt
  • Neu
  • Alt
Du musst angemeldet sein, um einen Kommentar schreiben zu können
Thomas
Level 41 , Bayreuth, Germany
8 Juli 2020, 16:02
Ich hab das mit regex gemacht... so
String name = input.replaceFirst("([A-Za-z\\- ]+)([0-9 ]+)","$1").trim();
Es gibt im Regex zwei Blöcke, die von runden Klammern eingeschlossen sind. Das sind auch später Blöcke, die mit $1 und $2 beim replace angesprochen werden können. Der erste Block schnappt alles, was Buchstaben, Leerzeichen und Bindestrich hat, also den Namen, und weist dem den Bezeichner $1 zu. Block zwei sind alle Zahlen und Leerzeichen, das wäre $2. Im replace Teil siehst du, dass ich nur $1 verwende. Es wird also der String nur durch Block 1 ersetzt. Würdest du $2 hinschreiben, bekommst du das Datum.
0
hidden #10625598
Level 23
8 Juli 2020, 16:21
ja gut, nur will die liste dann ja ein Person object, muss ich da eine eigene klasse dafür machen? while(reader.ready()){ String data = reader.readLine(); String name = data.replaceFirst("([A-Za-z\\- ]+)([0-9]+)", "$1").trim(); String date = data.replaceFirst("([A-Za-z\\- ]+)([0-9]+)", "$2").trim(); PEOPLE.add(name + date); }
0
Thomas
Level 41 , Bayreuth, Germany
8 Juli 2020, 16:27
Person Klasse ist schon geschrieben... siehe zweite Datei
0
hidden #10625598
Level 23
8 Juli 2020, 16:32
oha hab ich übersehen, nur wie bekomme ich das kack date von string zu Date?? String daate = data.replaceFirst("([A-Za-z\\- ]+)([0-9]+)", "$2").trim(); Date date = Integer.parseInt(daate); PEOPLE.add(new Person(name, date));
0
Thomas
Level 41 , Bayreuth, Germany
8 Juli 2020, 16:38
SimpleDateFormat parse() ist das Einfachste, was mir dazu einfällt (und was ich auch gemacht hab)
PEOPLE.add(new Person(name, new SimpleDateFormat("MM dd yyyy", Locale.ENGLISH).parse(date)));
0
hidden #10625598
Level 23
8 Juli 2020, 16:51
String filename = args[0]; try(BufferedReader reader = new BufferedReader(new FileReader(filename));){ while(reader.ready()){ String data = reader.readLine(); String name = data.replaceFirst("([A-Za-z\\- ]+)([0-9]+)", "$1").trim(); String date = data.replaceFirst("([A-Za-z\\- ]+)([0-9]+)", "$2").trim(); PEOPLE.add(new Person(name, new SimpleDateFormat("MM dd yyyy", Locale.ENGLISH).parse(date))); } } catch(FileNotFoundException e){} fehler: Achte darauf, dass die Namen aus der Datei korrekt in die PEOPLE-Liste eingefügt werden.
0
Thomas
Level 41 , Bayreuth, Germany
8 Juli 2020, 17:15
catch (IOException | ParseException e) {} mehr sehe ich da nicht an Problemen
0
hidden #10625598
Level 23
8 Juli 2020, 17:34
nein klappt leider nicht...
0
Thomas
Level 41 , Bayreuth, Germany
8 Juli 2020, 17:44
das ging bei mir durch...
public class Solution {
    public static final List<Person> PEOPLE = new ArrayList<>();

    public static void main(String[] args) {

        try (BufferedReader reader = new BufferedReader(new FileReader(args[0]))) {
            while (reader.ready()) {
                String input = reader.readLine();
                String name = input.replaceFirst("([A-Za-z\\- ]+)([0-9 ]+)","$1").trim();
                String date = input.replaceFirst("([A-Za-z\\- ]+)([0-9 ]+)","$2").trim();
                PEOPLE.add(new Person(name, new SimpleDateFormat("MM dd yyyy", Locale.ENGLISH).parse(date)));
            }
        } catch (IOException | ParseException ignore) {}
    }
}
0
Lernen
  • Registrierung
  • Java-Kurs
  • Hilfe zu Aufgaben
  • Preise
  • Spieleprojekte
  • Java Syntax
Community
  • Benutzer
  • Artikel
  • Forum
  • Chat
  • Erfolgsstorys
  • Aktivität
  • Affiliate Program
Unternehmen
  • Über uns
  • Kontakt
  • Rezensionen
  • Medien
  • CodeGym im Bildungsbereich
  • FAQ
  • Support
CodeGym CodeGym ist ein Java-Tutorial zum Lernen von Java von Grund auf. Dieser Kurs ist perfekt dafür geeignet, Java von Beginn an zu meistern. Er enthält über 1200 Aufgaben mit Sofortüberprüfung und grundlegende Theorie zu den Java-Grundlagen. Damit auch du bei deinem Kurs erfolgreich bist, haben wir eine ganze Reihe motivierender Inhalte: Quizfragen, Programmierprojekte, Inhalte zu effizientem Lernen und zum Berufseinstieg als Java-Entwickler.
Folgen
Sprache der Oberfläche
Programmierer werden gemacht, nicht geboren © 2023 CodeGym
MastercardVisa
Programmierer werden gemacht, nicht geboren © 2023 CodeGym
This website uses cookies to provide you with personalized service. By using this website, you agree to our use of cookies. If you require more details, please read our Terms and Policy.