2016-05-06 6 views
0

Neu in Java! Ich habe eine Klasse erstellt, die Konstruktoren für verschiedene Felder hat. Wenn ich jedoch versuche, die Felder zu drucken, erhalte ich "null" als Ausgabe. Bitte hilf mir zu verstehen warum. Hier ist die Klasse: `Java-Objektkonstruktor, der "null" zurückgibt

public class User { 
    //All relevant information to identify each user. 
     private String FirstName; 
     private String LastName; 
     private String Email; 
     private long PhoneNum; 
     private long CardNum; 

    //Build Constructors for User info. 

public User(String Fname, String Lname, String Mail, long num, long card) 
{ 
    Fname=FirstName; 
    Lname=LastName; 
    Mail=Email; 
    num=PhoneNum; 
    card=CardNum; 
} 

    //Method to set FirstName. 
public void setFirstName (String Fname) 
{ 
    FirstName=Fname; 
} 
//Method to get FirstName. 
public String getFirstName() 
{ 
    return FirstName; 
} 
//Method to set LastName. 
public void setLastName (String Lname) 
{ 
    LastName=Lname; 
} 


//Method to get Lastname. 
    public String getLastname() 
    { 
     return LastName; 
    } 
    //Method to set email. 
    public void setEmail (String Mail) 
    { 
     Email=Mail; 
    } 
    //Method to get email. 
    public String getEmail() 
    { 
     return Email; 
    } 
    //Method to set phonenumber. 
    public void setPhoneNum(long num) 
    { 
     PhoneNum=num; 
    } 
    //Method to get phonenumber. 
    public long getPhoneNum() 
    { 
     return PhoneNum; 
    } 
    //Method to set credit card number. 
     public void setCardNum(long card) 
    `enter code here`{ 
     CardNum=card; 
    } 
    // Method to get credit card number. 
     public long getCardNum() 
    { 
     return CardNum; 
    } 

Nun, wenn ich diesen Code ausführen, erhalte ich "null":

public class UserDemo { 
public static void main(String[] args) 
{ 
    String first="Matt"; 
    String last="Burns"; 
    String email="[email protected]"; 
    long phone=333; 
    long card=222; 
    User Matt=new User(first,last,email,phone,card); 
    System.out.print(Matt.getLastname()); 
} 

Was mache ich falsch? Vielen Dank im Voraus! Ist

`

+1

Pay aufmerksam Ionen zu den Compiler-Warnmeldungen. Sie sollten viele "Variablen möglicherweise nicht initialisiert" Warnungen erhalten haben. –

Antwort

1

umgekehrt, statt:

public User(String Fname, String Lname, String Mail, long num, long card){ 
    Fname=FirstName; 
    Lname=LastName; 
    Mail=Email; 
    num=PhoneNum; 
    card=CardNum; 
} 

es sein sollte:

public User(String Fname, String Lname, String Mail, long num, long card){ 
    FirstName = Fname; 
    LastName = Lname; 
    Email = Mail; 
    PhoneNum = num; 
    CardNum = card; 
} 

diese Art der Sache vermeiden Sie das this Schlüsselwort verwenden können. Hier ein Beispiel:

String firstName; 
public Constructor(String firstName){ 
    this.firstName = firstName; 
} 
0

Sie haben Ihre Konstruktor Zuweisungen in die falsche Richtung:

public User(String Fname, String Lname, String Mail, long num, long card) 
{ 
    // this refers to the current object being constructed 
    this.FirstName = Fname; 
    this.LastName = Lname; 
    this.Email = Mail; 
    this.PhoneNum = num; 
    this.CardNum = card; 
} 
0

Java-Konstruktor Objekte sollten wie so erstellt werden:

public User(String Fname, String Lname) 
{ 
    this.firstName = Fname; 
    //keyword 'this' refers to the new object, so the new object's Fname would equal the firstName place below 
    this.lastName = Lname; //same as above 
} 

Um einen neuen Benutzer zu erstellen, Verwenden Sie diesen Code:

User Matt = new("Matt", "Burns"); //Creates a new User Matt, with firstName "Matt" and lastName "Burns" 
System.out.println(Matt.getfirstName()); //prints User Matt's firstName to the console. 
+0

Dies löst das Problem des Benutzers, aber es wäre nützlich, wenn Sie erklären könnten, warum/was sie falsch gemacht haben. – xlm