2016-05-06 5 views
0

Javaに触発されました! 私はさまざまなフィールドのコンストラクタを持つクラスを作成しました。しかし、フィールドを試して印刷すると、出力として「null」が返されます。理由を理解するのを手伝ってください。ここではクラスがある:私はこのコードを実行すると、 `"null"を返すJavaオブジェクトコンストラクタ

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; 
    } 

は今、私は "ヌル" を受信:私は間違って

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()); 
} 

何をしているのですか?前もって感謝します!

`

+1

注意してくださいイオンをコンパイラの警告メッセージに追加します。あなたは "変数が初期化されていない可能性があります"という警告をたくさん受け取ったはずです。 –

答えて

1

他の方法で回避され、代わりに:

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

それは次のようになります。

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

あなたがthisキーワードを使用することができますこの種のものを避けるために。次に例を示します。

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

あなたはあなたのコンストラクタは間違った方法を割り当てた新しいユーザーを作成するには

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 
} 

、このコードを使用してください:

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

のJavaコンストラクタのオブジェクトには、同じように作成する必要があります:

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

これはユーザーの問題を解決しますが、なぜ彼らが間違っていたのか説明することができれば便利です。 – xlm

関連する問題