Alter Berechnen Java?

2 Antworten

Hier ein paar Tipps, die mir spontan einfallen:

  1. Variablenname "alter" ist irreführend -- die Person soll ihr Geburtstatum reinschreiben.
  2. Variablentyp "alter" -- du brauchst einen String, kein double.
  3. Von diesem String kannst du dann das Geburtstatum in brauchbarem Typ ableiten. Z.B. kannst du es in ein LocalDate parsen.
  4. Der Ausgabetext ist falsch, da soll kein Datum, sondern eine Dauer rauskommen. Achtung, die Einheit beachten!

Ich hoffe, das bringt schon mal was. :-)

BONEz851 
Fragesteller
 12.10.2022, 14:45

Ja Sorry, ich habe davor ein Code geschrieben der dein Geburstdatum ausrechnet und naja deswegen habe ich die Sysout() nicht verändert

0
BONEz851 
Fragesteller
 12.10.2022, 14:52
import java.util.Scanner;
import java.time.LocalDate;
import java.time.Duration;

public class Main {
    static Scanner scanner = new Scanner(System.in);

    public static double alter;

    public static void main(String[] args) {
        System.out.println("Hallo du hast dein Alter vergessen kein Problem.");
        System.out.println("Bitte schreib dein Geburtstag in xxxx-xx-xx Format in den Chat");
       String geburtsdatum = String.valueOf(scanner.nextLine()); // Die person schreibt sein alter in den chat
        LocalDate geburstdatumparse = LocalDate.parse(geburtsdatum);
        LocalDate datum = LocalDate.now();  // Die Jetzt Zeit wird genommen
        Duration diff = Duration.between(datum, geburstdatumparse);
        System.out.println("Dein Alter ist am " + diff);

    }
}

Jetzt spuckt er kein Error mehr aus, aber der Code funktioniert trotzdem nicht hahaha. da ist wohl ein Logik fehler

0
BONEz851 
Fragesteller
 12.10.2022, 15:05

also ich habe Jetzt nochmal was geändert

import java.util.Scanner;
import java.time.LocalDate;
import java.time.Duration;

public class Main {
    static Scanner scanner = new Scanner(System.in);

    public static double alter;

    public static void main(String[] args) {
        System.out.println("Hallo du hast dein Alter vergessen kein Problem.");
        System.out.println("Bitte schreib dein Geburtstag in xxxx-xx-xx Format in den Chat");
       String geburtsdatum = String.valueOf(scanner.nextLine()); // Die person schreibt sein alter in den chat
        LocalDate geburstdatumparse = LocalDate.parse(geburtsdatum);
        LocalDate datum = LocalDate.now();  // Die Jetzt Zeit wird genommen
        System.out.println(geburstdatumparse);
        System.out.println(datum);
       // Duration diff = Duration.between(datum, geburstdatumparse);

       // System.out.println("Dein Alter ist am " + diff);

    }
}

Jetzt spuckt er

2001-01-01

2022-10-12
genau das sollte er auch. warum kann ich nicht die voneinander abizehen mit Duration.between

0
BONEz851 
Fragesteller
 12.10.2022, 15:16
So jetzt klappt es import java.time.Period;
import java.util.Scanner;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Main {
    static Scanner scanner = new Scanner(System.in);

    public static double alter;

    public static void main(String[] args) {
        System.out.println("Hallo du hast dein Alter vergessen kein Problem.");
        System.out.println("Bitte schreib dein Geburtstag in xxxx-xx-xx Format in den Chat");
       String geburtsdatum = String.valueOf(scanner.nextLine()); // Die person schreibt sein alter in den chat
        LocalDate geburstdatumparse = LocalDate.parse(geburtsdatum,DateTimeFormatter.ISO_LOCAL_DATE);
        LocalDate datum = LocalDate.now();  // Die Jetzt Zeit wird genommen
        System.out.println(geburstdatumparse);
        System.out.println(datum);
        Period period = Period.between(geburstdatumparse, datum);

       System.out.println("Du bist genau " + period);

    }
}

Zwar hast du nicht geantwortet, aber egal

0
sonderdings  12.10.2022, 15:55
@BONEz851

Sieht doch gut aus! :-)

Ich bin mir nur nicht sicher, dass du period direkt in den String mit reinnehmen willst, da ich nicht denke, dass da von alleine Jahre rauskommen.

0
sonderdings  12.10.2022, 20:02
@BONEz851

Freut mich, wenn ich dich in die richtige Richtung stupsen konnte. :-)

0

Frage: Warum nutzt du Duration, welches ohne weitere Parameter und Formatierungen sein Ergebnis in Millisekunden oder Sekunden auswirft.

Wäre es nicht gescheiter, wenn du Period verwendest und so ein Ergebnis erhältst, was Jahre/Monate/Tage ausgeben kann und damit deutlich einfacher zu deinem gewünschten Ergebnis führt?