繁体   English   中英

Java对象构造函数返回“ null”

[英]Java object constructor returning “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;
    }

现在,当我运行此代码时,我收到“ null”:

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

我究竟做错了什么? 先感谢您!

`

是另一种方式,而不是:

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关键字。 这是一个例子:

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

您以错误的方式分配了构造函数:

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

Java构造函数对象应如下创建:

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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM