Exception bei Verwendung von LocalDate

sCream_19

Mitglied
Servus miteinander!
Ich versuche mich kurz zu fassen. Zur Zeit bearbeite ich eine kleine Hausarbeit, bei welcher ich eine Art kleine Kartei (Freundesliste) programmieren soll. Eines der Attribute, welche der Freund aufweisen soll, ist natürlich sein Geburtstag. Es folgt ein kleiner Auscchnitt aus der Freund-Klasse:

Java:
import java.time.LocalDate;

public class Freund {
    
    private String vorName;
    private String nachName;
    private LocalDate geburtsDatum;
    private String telefonNr;
    private String handyNr;
    private String eMail;
    private Adresse adresse;
    
    

    public Freund(String vorname, String nachname, int tag, int monat, int jahr, String strasse, String plz, String ort, String telefonnummer, String handynummer, String email)
    {
        this.vorName = vorname;
        this.nachName = nachname;
        
        LocalDate gDatum = LocalDate.of(jahr, monat, tag);
        this.geburtsDatum = gDatum;
        
        this.adresse = new Adresse(strasse,plz,ort);
        
        this.telefonNr = telefonnummer;
        this.handyNr = handynummer;
        this.eMail = email;
    }
    
    public Freund(String vorname, String nachname, int tag, int monat, int jahr, String strasse, String plz, String ort)
    {
        this(vorname, nachname, tag, monat, jahr, strasse, plz, ort, "","","");
    }

    public Freund(String vorname, String nachname, int tag, int monat, int jahr)
    {
        this(vorname, nachname, tag, monat, jahr, "","","","","","");
    }
    
    public Freund(String vorname, String nachname)
    {
        this(vorname, nachname, 1,1,1950,"","","","","","");
    }

Wenn ich nun in meiner Testklasse ein Objekt der Freund-Klasse erzeuge, läuft alles tadellos, zum Beispiel:

Java:
public class FreundTest {

    public static void main(String[] args)
    {
        Freund f2 = new Freund("Herbert", "Hadlich", 07,05,1980, "Marienplatz 23", "97667", "MUC");
        f2.datenAusgeben();           
    }

Die Ausgabe auf der Konsole wäre hierbei:
Name: Herbert Hadlich
Geburtsdatum: 7.5.1980
Adresse: Marienplatz 23, 97667 MUC
Kontakt: Telefonnummer - , Handynummer - , eMail:

Gebe ich zwei speziellle Werte für die Datumsangabe im Konstruktor an, steigt der Compiler aus. Wenn ich "08" oder "09" anstatt "07" als Tag mitgebe, erhalte ich "Exception in thread "main" java.lang.Error: Unresolved compilation problem: The literal 08 of type int is out of range"
Mir ist schon bewusst, dass man Integer-Zahlen nicht mit führender Null schreiben sollte - Ich frage mich gerade nur, wieso die Exception ausschließlich bei diesen beiden Zahlen auftritt.

Kann mir bitte jemand helfen?
MfG
 

Robat

Top Contributor
Integer, die in Java mit einer 0 beginnen, werden als Zahlen im oktalen System (Basis 8) behandelt. Im Oktalsystem gibt es nur Zeichen von 0 bis 7 .. 8 bzw 9 sind da nicht enthalten, daher meckert der Compiler.
 

sCream_19

Mitglied
Was wäre denn die denkbar einfachste Lösung dieses "Problems"? Den übergebenen Parameter im Konstruktor abfragen und gegebenenfalls für mit 0 beginnende Eingaben mit nem if abfangen?
 

Robat

Top Contributor
Wenn du es, wie jetzt, als Konstante eingibst, ist es ein Compilerfehler .. da brauchst/kannst du zur Laufzeit nichts abfangen weil dein Code gar nicht kompilieren dürfte. Wenn die Eingabe von der Konsole / GUI / ... kommt, kann die Zahl ruhig mit führender 0 eingegeben werden.
 

Robat

Top Contributor
Ich versteh nicht wo das Problem liegt. Du wirst ja wohl kaum statisch das Datum da in den Code schreiben wollen, oder?
Erklär vielleicht mal worum genau es dir eigentlich geht
 

httpdigest

Top Contributor
Falls du die Hinweise/Erklärungen/Gründe, warum dein Programm so nicht kompiliert, nicht verstanden hast, hier das ganze als klare Handlungsanweisung:

Ändere:
Java:
Freund f2 = new Freund("Herbert", "Hadlich", 08,05,1980, "Marienplatz 23", "97667", "MUC");
in:
Java:
Freund f2 = new Freund("Herbert", "Hadlich", 8,5,1980, "Marienplatz 23", "97667", "MUC");
Fertig.
 

sCream_19

Mitglied
@httpdigest - Das hab ich schon verstanden. Mir gehts mehr darum eben abzusichern, dass dieser Fall nicht eintrifft.
@Robat - Naja ich soll nur exemplarisch von einer Containerklasse aus ein paar Objekte anlegen, von daher sollte das auf die Art und Weise reichen denk ich.
 

httpdigest

Top Contributor
Was meinst du mit: "dass dieser Fall nicht eintrifft"?
Das ist ja, als würde man sagen: "Mir geht es darum, dass Entwickler keinerlei Fehler mehr in ihre Programme einbauen."
Wie ja bereits gesagt, sorgt der Compiler dafür, dass solche Zahlenliterale nicht eingebbar sind. Es handelt sich hierbei wie gesagt um Literale, also Zahlenwerte, die als solche genauso im Code hardgecoded drinstehen.
Das ganze ist kein Problem, wenn es eben keine Literale sind, sondern wenn du z.B. aus einer anderen Variablen einen Zahlenwert ausliest.
Programme, die eben solche Fehler enthalten, sind gar nicht erst übersetzbar/kompilierbar.
 
X

Xyz1

Gast
@sCream_19 Nimm als Parametertyps Strings und setze einen kleinen Parser davor, dann ist Dein Quelltext sozusagen vor unsachgemäßer Verwendung geschützt. Minimale Geschwindigkeitsverringerungen sind denke ich mal hinnehmbar/akzeptabel. Und starte nur Anwendungen die auch vollständig kompilierbar sind. ;)
Später kann ich mir das mal ansehen....
 

httpdigest

Top Contributor
Warum verwenden wir nicht alle nur noch Strings für alles? Exceptions zur Laufzeit sind doch viiieeel besser als sofortige Compilerfehler zur Übersetzungszeit... NICHT!
 

sCream_19

Mitglied
Sorry aber das ist doch Blödsinn ... Einen ungeeigneten Datentyp nutzen nur weil ein Programmierer kein passendes Literal nutzen kann?
Auch wenn ich gerade erst lerne wie man programmiert, so bin ich dennoch selbst fähig genug das passende Literal einzutragen. Ich dachte nur, es gäbe vielleicht in diesem Falle ne Möglichkeit bei ner "08" anstatt ner "8" bei Instanzierung des Objektes dafür zu sorgen, dass die Falscheingabe (für den Fall, dass ich es nicht selbst mache) erkannt und korrigiert wird.
 

Robat

Top Contributor
@sCream_19 Mir ging es bei dem Beitrag nicht darum dich in irgendeiner Weise als schlechten Programmierer darzustellen. Das du nach Lösungen fragst und die Thematik verstehen willst ist löblich und völlig verständlich. :)
Mir ging es dabei nur darum die Antwort @Tobias-nrw zu hinterfragen .. Das würde niemand so machen und ist auch völlig unnötig. Du hast ja den Kompiler damit er dir sagen kann, wenn was nicht stimmt. Das mit einem unpassenden Datentyp zu umgehen halte ich für Schwachsinn.
 

mrBrown

Super-Moderator
Mitarbeiter
Ich dachte nur, es gäbe vielleicht in diesem Falle ne Möglichkeit bei ner "08" anstatt ner "8" bei Instanzierung des Objektes dafür zu sorgen, dass die Falscheingabe (für den Fall, dass ich es nicht selbst mache) erkannt und korrigiert wird.
Wie schon mal gesagt: das ist keine falsche "Eingabe", sondern einfach ein Fehler im Code.
Das abfangen zu wollen, ist in etwa so, also würdest du zur Laufzeit abfangen, dass der Programmierer nicht statt einem if ein fi geschrieben hat.

Eingaben zur Laufzeit kannst du mit führenden Nullen tätigen, die werden passend verarbeitet.

Mit einem anderem Java-Compiler würde das ganze bei dir übrigens einen Fehler zur Kompilezeit werfen (der Eclipse-Compiler hat das leider so als Default...)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
Fiedelbambu Exception in Application constructor Java Basics - Anfänger-Themen 3
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
S JavaKara Null Exception Error Java Basics - Anfänger-Themen 4
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
LiFunk Exception: es dürfen nur Nummern eingelesen werden Java Basics - Anfänger-Themen 6
low_in_the_head Eigene Exception nutzen Java Basics - Anfänger-Themen 4
1 Exception Java Basics - Anfänger-Themen 2
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
I JAX-RS Exception Handling Java Basics - Anfänger-Themen 4
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
J null exception Array Java Basics - Anfänger-Themen 5
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
C Exception-Frage Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
I Exception bei Button mit wait() und notifyAll() Java Basics - Anfänger-Themen 3
N Wie teste ich eine geworfene Exception? Java Basics - Anfänger-Themen 8
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
D Scanner- Exception NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception werfen bei falscher Datumseingabe Java Basics - Anfänger-Themen 14
A Exception handeling mit finally und objektreferenzen Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
S Exception Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
OSchriever Exception für Abbrechen-Schaltfläche JOptionpane Java Basics - Anfänger-Themen 9
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
J Exception unreachable Java Basics - Anfänger-Themen 12
O unchecked Exception Java Basics - Anfänger-Themen 4
P Exception werfen Java Basics - Anfänger-Themen 15
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
D Warum die Nullpointer Exception Java Basics - Anfänger-Themen 6
O Exception behandlung einfach Ueben mit Fakt! Java Basics - Anfänger-Themen 10
I OOP Was ist die "Exception Hierarchie" ? Java Basics - Anfänger-Themen 3
U Null Exception aber keine Ahnung warum Java Basics - Anfänger-Themen 5
G Exception und Ausgabe der Duplikate Java Basics - Anfänger-Themen 6
H Try Catch Throw Exception Java Basics - Anfänger-Themen 1
W Exception in Main abfangen oder in der Methode? Java Basics - Anfänger-Themen 10
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
Mosquera Exception Java Basics - Anfänger-Themen 5
M rekursive division/0 mit exception Java Basics - Anfänger-Themen 18
N Nullpointer exception Java Basics - Anfänger-Themen 4
L Eigene Exception schreiben bei zu langem Array Java Basics - Anfänger-Themen 10
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
S Array Grenzen-Exception Java Basics - Anfänger-Themen 11
E InputStream im Servlet wirft Exception Java Basics - Anfänger-Themen 5
D Erste Schritte Java.lang.NullPointer.Exception Java Basics - Anfänger-Themen 8
G Arrays out of Bounds exception Java Basics - Anfänger-Themen 2
H Compiler-Fehler Out of Bunce Exception bei einem Char Java Basics - Anfänger-Themen 6
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
C Null Pointer Exception Java Basics - Anfänger-Themen 10
F Klassen Eigene Exception Bedingungen festlegen Java Basics - Anfänger-Themen 2
G Null Pointer Exception Java Basics - Anfänger-Themen 4
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
O Exception bei Parse-Vorgang Java Basics - Anfänger-Themen 17
T Exception Problem Java Basics - Anfänger-Themen 5
Z Getter/Setter NullPointer Exception Java Basics - Anfänger-Themen 6
W Nullpointer Exception bei .add(...) Java Basics - Anfänger-Themen 6
L Input/Output InputMismatch.Exception Java Basics - Anfänger-Themen 7
B Exception Liste von Liste Java Basics - Anfänger-Themen 3
D Throw Exception Java Basics - Anfänger-Themen 2
MiMa JavaDoc Exception @throws schlagen an Java Basics - Anfänger-Themen 4
J Exception in thread "main" Java Basics - Anfänger-Themen 1
B Exception richtig einbinden Java Basics - Anfänger-Themen 1
M Exception soll Werte mitgeliefert bekommen Java Basics - Anfänger-Themen 12
M Selbstdefinierte Exception Java Basics - Anfänger-Themen 5
B Exception Throwable Java Basics - Anfänger-Themen 11
M Erste Schritte Start Methode - Exception Java Basics - Anfänger-Themen 1
F Operatoren Wieso fliegt hier eine NullPointer Exception :( Java Basics - Anfänger-Themen 3
F nullpointer exception - arrayerstellung Java Basics - Anfänger-Themen 4
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
H Erste Schritte Exception: 0 Java Basics - Anfänger-Themen 2
A Exception vs. Testklasse (Programm testen) Java Basics - Anfänger-Themen 2
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
K Exception nur im "Debug"-Modus und jedem 3.-5. mal Ausführen Java Basics - Anfänger-Themen 3
S Java memory fehler: Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa Java Basics - Anfänger-Themen 5
L [JFrame] Exception - woher? Java Basics - Anfänger-Themen 8
N Threads Exception in thread "main"... Feher bei dem Versuch ein Radius zu berechnen Java Basics - Anfänger-Themen 4
R "Missbrauch" von Exception zum Programmfluss Java Basics - Anfänger-Themen 1
U Exception: OutOfMemoryError Java Basics - Anfänger-Themen 11
A Int Eingabe: String mit Exception abfangen. Aber wie? Java Basics - Anfänger-Themen 3
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11
V Threads Exception in Thread behandeln Java Basics - Anfänger-Themen 3
F Java exception bei der Ausführung Java Basics - Anfänger-Themen 10
J Exception für String Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben