Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用调用其他java文件的对象创建两个构造函数_Java - Fatal编程技术网

使用调用其他java文件的对象创建两个构造函数

使用调用其他java文件的对象创建两个构造函数,java,Java,我真的不知道我的问题是否有意义,但我的任务是: “编写第三个类StudentRecord,它有两个属性: 学生斯图; 地址地址; 和两个构造函数。第一个构造函数被赋予一个学生对象和一个地址对象来初始化属性。第二个构造函数被赋予一个名字、姓氏、学生ID、gpa、街道地址、城市、州和zipcode,并使用它们来初始化属性“ 我不明白我应该如何让两个构造函数从两个不同的java文件中获取信息 这是我为第三个名为“StudentRecord”的类编写的代码。 我毫不怀疑这是错误的 public clas

我真的不知道我的问题是否有意义,但我的任务是:

“编写第三个类StudentRecord,它有两个属性: 学生斯图; 地址地址; 和两个构造函数。第一个构造函数被赋予一个学生对象和一个地址对象来初始化属性。第二个构造函数被赋予一个名字、姓氏、学生ID、gpa、街道地址、城市、州和zipcode,并使用它们来初始化属性“

我不明白我应该如何让两个构造函数从两个不同的java文件中获取信息

这是我为第三个名为“StudentRecord”的类编写的代码。 我毫不怀疑这是错误的

public class StudentRecord {
   Student stu;
   Address addr;

   public StudentRecord() {
      Student stu;
      Address addr;
   }

   public StudentRecord(String _fName, String _lName, int _id, double _gpa, String _street, String _city, String _state, int _zip){

   }

   public String toString() {
      return String.format(stu + "\n" + addr);
   }
}
这是我为TestStudentRecord类编写的代码,我得到的只是 当我运行程序时“null”

public class TestStudentRecord {
   public static void main(String[] args) {
      StudentRecord stu1 = new StudentRecord("Jane", "Brown", 182765, 2.333, "13 Flower St.", "Pulteneyville", "NY", 14386);
      System.out.println(stu1);
   }
}
当我运行这个程序时,我得到的只是“null”,而不是toString方法,它提供了我在测试类中键入的学生信息

对于那些要求学生和地址课程的人,请看:

public class Student {
    // attributes of a Student
    private String firstName;
    private String lastName;
    private int studentId;
    private double gpa;

   /**
    * Student constructor.
    * @param _fName student's first name
    * @param _lName student's last name 
    * @param _id student's id number
    * @param _gpa students GPA
    */
    public Student(String _fName, String _lName, int _id, double _gpa) {
        firstName = _fName;
        lastName = _lName;
        studentId = _id;
        gpa = _gpa;
    }

   /**
    * getFirstName - Accessor for first name
    * @return the student's first name
    */
    public String getFirstName() {
        return firstName;
    }

   /**
    * getLastName - Accessor for last name
    * @return the student's last name
    */
    public String getLastName() {
        return lastName;
    }

   /**
    * getId - Accessor for ID
    * @return the student's ID
    */
    public int getStudentId() {
        return studentId;
    }

   /**
    * getGpa - Accessor for gpa
    * @return the student's gpa
    */
    public double getGpa() {
        return gpa;
    }

   /**
    * setFirstName - Mutator for first name
    * @param the new first name
    */
    public void setFirstName(String _fName) {
        firstName = _fName;
    }

   /**
    * setLastName - Mutator for last name
    * @param the new last name
    */
    public void setLastName(String _lastName) {
        lastName = _lastName;
    }

   /**
    * setStudentId - Mutator for ID
    * @param the new ID
    */
    public void setStudentId(int _id) {
        studentId = _id;
    }

   /**
    * setGpa - Mutator for gpa
    * @param the new gpa
    */
    public void setGpa(double _gpa) {
        gpa = _gpa;
    }

   // toString Method
   public String toString() {
      return String.format(getLastName() + ", " + getFirstName() + "\n" + "ID: " + getStudentId() + " GPA: %3.1f", getGpa());
   }
}

您的构造函数如下所示。空构造函数不会为类变量赋值

  public StudentRecord(String _fName, String _lName, int _id, double _gpa, String _street, String _city, String _state, int _zip){

   }
正如Eran所提到的,它应该如下所示

public StudentRecord(String _fName, String _lName, int _id, double _gpa, String _street, String _city, String _state, int _zip){
    this.stu = new Student(_fName, _lName, _id, _gp);
    this.addr = new Address(_street, _city, _state, _zip);
   }

现在,您的toString将具有stu和addr的值。将被打印。

建议您遵循以下方法,通过有争议的构造函数初始化您的对象

public class StudentRecord {
   Student stu;
   Address addr;

   public StudentRecord() {
      Student stu;
      Address addr;
   }

   public StudentRecord(String _fName, String _lName, int _id, double _gpa, String _street, String _city, String _state, int _zip){
        this.stu = new Student(_fName, _lName, _id, _gpa);
        this.addr=new Address(_street,_city,_state,_zip);
   }

   public String toString() {
      return String.format(stu + "\n" + addr);
   }
}

由于您已经在address和student类中跳过了toString方法,因此您将获得对象。

您必须使用此方法初始化变量。{variable name}={variable name}。
此外,通常最好将构造函数链接起来(请参阅),通过这种方式,类中的更改以及许多构造函数更容易实现。
我还建议重命名变量,因为在Java中变量不应该以下划线开头(请参阅)


您的构造函数
StudentRecord(String\u fName、String\u lName、int\u id、double\u gpa、String\u street、String\u city、String\u state、int\u zip)
的主体为空。它应该将相关参数分配给类的相关实例变量。您没有在构造函数中执行任何操作。您期望什么?想想
Student
的构造函数,当
StudentRecord
用属于
Student
的值初始化时,您能调用它吗?如果在
Student
中没有参数化构造函数,那么至少可以调用getter和setter。主要提示:您也必须初始化
StudentRecord
的类属性,这些属性也是对象,并且具有构造函数、getter和setter…您能否也共享student和Address类,以便我们为您提供完整的解决方案。此外,根据您的代码,您没有通过有争议的承包商初始化您的地址和学生班级。这是你需要做的。
public class StudentRecord {
   Student stu;
   Address addr;

   public StudentRecord() {
      Student stu;
      Address addr;
   }

   public StudentRecord(String _fName, String _lName, int _id, double _gpa, String _street, String _city, String _state, int _zip){
        this.stu = new Student(_fName, _lName, _id, _gpa);
        this.addr=new Address(_street,_city,_state,_zip);
   }

   public String toString() {
      return String.format(stu + "\n" + addr);
   }
}
public class StudentRecord {
   Student student;
   Address addr;

   public StudentRecord(Student student, Address addr) {
      this.student = student;
      this.addr = addr;
   }

   public StudentRecord(String fName, String lName, int id, double gpa, String street, String city, String state, int zip){
    this(new Student(fName, lName, id, gpa),
        new Address(street,city,state,zip));
   }

   public String toString() {
      return String.format(student + "\n" + addr);
   }
}