2016-04-21 6 views
-1

Person.javaÄrger ein Objekt aus selbst definierten Klassen

public class Person { 
    public String firstname; 
    public String lastname; 
    public Date dob; 
    public boolean sex; 

    public Person(String firstname, String lastname, Date dob, boolean sex){ 
     this.firstname = firstname; 
     this.lastname = lastname; 
     this.dob = dob; 
     this.sex = sex; 
    } 

    public Person(String firstname, String lastname, Date dob, String s){ 
     this.firstname = firstname; 
     this.lastname = lastname; 
     this.dob = dob; 
     if (s.charAt(0)=='f' || s.charAt(0)=='F') sex = true; else sex = false; 
    } 

Date.java

public class Date { 
    public int day; 
    public int month; 
    public int year; 

    public Date(int day, int month, int year) 
    { 
     this.day = day; 
     this.month = month; 
     this.year = year; 
    } 
} 

Warum ist das falsch? Wie erstelle ich ein Objekt richtig? Dies ist von einem Papier, daher können die obigen Klassen nicht geändert werden.

public static void main(String[] args) { 
    Person person1 = new Person("Adeline", "Wells", (12,4,1992), false); 
} 
+0

Was ist falsch? Bitte lesen Sie dies, bevor Sie fragen: http://stackoverflow.com/help/how-to-ask – tak3shi

+0

Beachten Sie, dass der Konstruktor "Date", den Sie verwenden, veraltet ist und die gesamte Klasse "Date" veraltet ist (verwenden Sie stattdessen "Instant"). Zusätzlich machen Sie zwei nicht-offensichtliche Fehler, indem Sie einen booleschen Wert verwenden: dass das Geschlecht der Person bekannt ist (und als männlich/weiblich erklärt wird) und dass ein Geschlecht (männlich) auf "wahr" abbildet. – chrylis

+0

Sie vermissen 'neues Datum' in' ..new Person (... 'es sollte' ... "Wells" sein, neues Datum (12.4.1992) ... ' – Yazan

Antwort

1

Das Problem ist, dass Ihr Feld Datum in Person-Klasse ist auch eine Klasse, so dass Sie auf diese Weise tun:

public static void main(String[] args) { 
    Date d = new Date(12,4,1992); 
    Person person1 = new Person("Aaron", "Wells", d, false); 
} 

Andernfalls, wenn Sie direkt Tag Monat und Jahr passieren möchten, können Sie tun somenthig wie folgt aus:

public Person(String firstname, String lastname, int d, int m, int y, boolean sex){ 
     this.firstname = firstname; 
     this.lastname = lastname; 
     this.dob = new Date(d, m, y); 
     this.sex = sex; 
    } 

und Sie dann jetzt tun können

public static void main(String[] args) { 
    Person person1 = new Person("Adeline", "Wells", 12,4,1992, false); 
} 
+0

danke, gibt es absolut keine Weg sie alle in eine Linie zu bringen? – Ken

0

Sie können dies wie folgt in einer Zeile tun:

public static void main(String[] args) { 
    Person person1 = new Person("Aaron", "Wells", new Date(12,4,1992), false); 
} 
Verwandte Themen