Alter Berechnen Java?
Hallo, also ich möchte das Alter berechnen in dem man in die Konsole sein Geburtstag eingibt und das mit der Jetzt genommenen Zeit abzieht. Davon sollte man die Differenz Berechnen.
ich weiß wo der Fehler in mein Code ist, aber kein Plan wie ich das ändern soll.
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 xx-xx-xxxx Format in den Chat");
double alter = scanner.nextDouble(); // DIe person schreibt sein alter in den chat
LocalDate datum = LocalDate.now(); // Die Jetzt Zeit wird genommen
Duration diff = Duration.between(datum, alter);
System.out.println("Dein Geburtsdatum ist am " + diff);
}
}
2 Antworten
Hier ein paar Tipps, die mir spontan einfallen:
- Variablenname "alter" ist irreführend -- die Person soll ihr Geburtstatum reinschreiben.
- Variablentyp "alter" -- du brauchst einen String, kein double.
- Von diesem String kannst du dann das Geburtstatum in brauchbarem Typ ableiten. Z.B. kannst du es in ein LocalDate parsen.
- Der Ausgabetext ist falsch, da soll kein Datum, sondern eine Dauer rauskommen. Achtung, die Einheit beachten!
Ich hoffe, das bringt schon mal was. :-)
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.
Freut mich, wenn ich dich in die richtige Richtung stupsen konnte. :-)
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
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
Ja Sorry, ich habe davor ein Code geschrieben der dein Geburstdatum ausrechnet und naja deswegen habe ich die Sysout() nicht verändert
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?
Zwar hast du nicht geantwortet, aber egal