使用 Composition 时,如何使用 JAVA 中的 Set 方法初始化值?
How to initialize values using Set Methods in JAVA, when using Composition?
我正在解决 OOP (JAVA) 练习任务。在学习作文的过程中,我遇到了一个让我很吃力的练习题。请检查我的代码并提出解决方案。我将不胜感激 :)
练习题为:
对于下面描述的每个属性,选择适当的数据类型。每个 class 的所有属性都应该是私有的,并通过 get/set 方法公开。还要定义至少一个允许初始化对象的 2-3 个属性的构造函数。
使用 courseCode 和 courseTitle 实例变量定义 class 课程。
使用 countryCode、cityCode 和 lineNumber 属性定义 PhoneNumber class。
使用 streetAddress、town、city、country 和 phoneNumber 属性定义 class 地址。 phoneNumber 应为 PhoneNumber 类型。
定义一个 class 具有姓名、电子邮件、CNIC、课程 1、课程 2 和地址属性的学生。其中 course1 和 course2 应为 Course 类型,address 应为 Address 类型。在 Student class 中定义一个构造函数,该构造函数应仅采用 CNIC、姓名和地址。
创建一个 StudentTest class。在其 main 方法中,创建一个名为 student1 的 Student 对象。完全初始化它的所有属性。 CNIC、名称和地址应使用构造函数进行初始化。其他属性应使用 setter 方法初始化。所有属性的值应由用户给出。对象完全初始化后,使用 get 方法打印所有属性值。
创建另一个对象 student2,假设用户也与 student1 住在同一地址。重用student1的地址对象来初始化student2的地址。您不需要从 student2 对象的用户输入中获取属性。打印所有实例变量的值。
我的代码截图:
StudentTest Class
Address Class
PhoneNumber Class
Course Class
Student Class
我遇到的错误:
ERROR
我的代码副本:
(StudentTest Class)
public class StudentTest {
public static void main(String[] args) {
PhoneNumber phoneNumber = new PhoneNumber(92, 042, 354);
Address address = new Address("Street No.502", "HT", "Lahore", "Pakistan", phoneNumber);
Student student1 = new Student("Muaz", 34603, address);
student1.setEmail("testEmail@java.com");
System.out.println(student1.getEmail());
student1.getCourse1().setCourseCode(101);
student1.getCourse1().setCourseTitle("OOP");
student1.getCourse2().setCourseCode(102);
student1.getCourse2().setCourseTitle("EMO");
System.out.println(student1.getCourse1().getCourseCode());
System.out.println(student1.getCourse1().getCourseTitle());
System.out.println(student1.getCourse2().getCourseCode());
System.out.println(student1.getCourse2().getCourseTitle());
}
}
(学生Class)
public class Student {
//Variables
private String name;
private int cnic;
private Address address;
private String email;
private Course course1;
private Course course2;
//Constructor
public Student(String name, int cnic, Address address){ setName(name); setCnic(cnic); setAddress(address); }
//Set and Get Methods
public void setName(String name){ this.name = name; }
public String getName(){ return name; }
public void setCnic(int cnic){ this.cnic = cnic; }
public int getCnic(){ return cnic; }
public void setAddress(Address address){ this.address = address; }
public Address getAddress(){ return address; }
public void setEmail(String email){ this.email = email; }
public String getEmail(){ return email; }
public void setCourse1(Course course1){ this.course1 = course1; }
public Course getCourse1(){ return course1; }
public void setCourse2(Course course2){ this.course2 = course2; }
public Course getCourse2(){ return course2; }
}
(地址Class)
public class Address {
private String streetAddress;
private String town;
private String city;
private String country;
private PhoneNumber phoneNumber;
public Address(String streetAddress, String town, String city, String country, PhoneNumber phoneNumber){
this.streetAddress = streetAddress;
this.town = town;
this.city = city;
this.country = country;
this.phoneNumber = phoneNumber;
}
}
(电话号码Class)
public class PhoneNumber {
private int countryCode;
private int cityCode;
private int lineNumber;
public PhoneNumber(int countryCode, int cityCode, int lineNumber){
this.countryCode = countryCode;
this.cityCode = cityCode;
this.lineNumber = lineNumber;
}
}
(课程Class)
public class Course {
private int courseCode;
private String courseTitle;
public void setCourseCode(int courseCode){
this.courseCode = courseCode;
}
public int getCourseCode(){
return courseCode;
}
public void setCourseTitle(String courseTitle){
this.courseTitle = courseTitle;
}
public String getCourseTitle(){
return courseTitle;
}
}
错误:
Exception in thread "main" java.lang.NullPointerException
at StudentTest.main(StudentTest.java:14)
Process finished with exit code 1
您似乎还没有为课程 1 设置值。因此您正在尝试检索不存在的值。
你应该打电话给
Course course1 = new Course();
student1.setCourse1(course1);
我可以从您的屏幕截图中收集到的信息,请执行以下操作以消除 NullPointerException
错误:
在您的 Student.java
class 中将变量 course1
初始化为 private Course course1 = new Course()
。对 course2
.
做同样的事情
我正在解决 OOP (JAVA) 练习任务。在学习作文的过程中,我遇到了一个让我很吃力的练习题。请检查我的代码并提出解决方案。我将不胜感激 :) 练习题为:
对于下面描述的每个属性,选择适当的数据类型。每个 class 的所有属性都应该是私有的,并通过 get/set 方法公开。还要定义至少一个允许初始化对象的 2-3 个属性的构造函数。 使用 courseCode 和 courseTitle 实例变量定义 class 课程。 使用 countryCode、cityCode 和 lineNumber 属性定义 PhoneNumber class。 使用 streetAddress、town、city、country 和 phoneNumber 属性定义 class 地址。 phoneNumber 应为 PhoneNumber 类型。 定义一个 class 具有姓名、电子邮件、CNIC、课程 1、课程 2 和地址属性的学生。其中 course1 和 course2 应为 Course 类型,address 应为 Address 类型。在 Student class 中定义一个构造函数,该构造函数应仅采用 CNIC、姓名和地址。 创建一个 StudentTest class。在其 main 方法中,创建一个名为 student1 的 Student 对象。完全初始化它的所有属性。 CNIC、名称和地址应使用构造函数进行初始化。其他属性应使用 setter 方法初始化。所有属性的值应由用户给出。对象完全初始化后,使用 get 方法打印所有属性值。 创建另一个对象 student2,假设用户也与 student1 住在同一地址。重用student1的地址对象来初始化student2的地址。您不需要从 student2 对象的用户输入中获取属性。打印所有实例变量的值。
我的代码截图:
StudentTest Class
Address Class
PhoneNumber Class
Course Class
Student Class
我遇到的错误:
ERROR
我的代码副本:
(StudentTest Class)
public class StudentTest {
public static void main(String[] args) {
PhoneNumber phoneNumber = new PhoneNumber(92, 042, 354);
Address address = new Address("Street No.502", "HT", "Lahore", "Pakistan", phoneNumber);
Student student1 = new Student("Muaz", 34603, address);
student1.setEmail("testEmail@java.com");
System.out.println(student1.getEmail());
student1.getCourse1().setCourseCode(101);
student1.getCourse1().setCourseTitle("OOP");
student1.getCourse2().setCourseCode(102);
student1.getCourse2().setCourseTitle("EMO");
System.out.println(student1.getCourse1().getCourseCode());
System.out.println(student1.getCourse1().getCourseTitle());
System.out.println(student1.getCourse2().getCourseCode());
System.out.println(student1.getCourse2().getCourseTitle());
}
}
(学生Class)
public class Student {
//Variables
private String name;
private int cnic;
private Address address;
private String email;
private Course course1;
private Course course2;
//Constructor
public Student(String name, int cnic, Address address){ setName(name); setCnic(cnic); setAddress(address); }
//Set and Get Methods
public void setName(String name){ this.name = name; }
public String getName(){ return name; }
public void setCnic(int cnic){ this.cnic = cnic; }
public int getCnic(){ return cnic; }
public void setAddress(Address address){ this.address = address; }
public Address getAddress(){ return address; }
public void setEmail(String email){ this.email = email; }
public String getEmail(){ return email; }
public void setCourse1(Course course1){ this.course1 = course1; }
public Course getCourse1(){ return course1; }
public void setCourse2(Course course2){ this.course2 = course2; }
public Course getCourse2(){ return course2; }
}
(地址Class)
public class Address {
private String streetAddress;
private String town;
private String city;
private String country;
private PhoneNumber phoneNumber;
public Address(String streetAddress, String town, String city, String country, PhoneNumber phoneNumber){
this.streetAddress = streetAddress;
this.town = town;
this.city = city;
this.country = country;
this.phoneNumber = phoneNumber;
}
}
(电话号码Class)
public class PhoneNumber {
private int countryCode;
private int cityCode;
private int lineNumber;
public PhoneNumber(int countryCode, int cityCode, int lineNumber){
this.countryCode = countryCode;
this.cityCode = cityCode;
this.lineNumber = lineNumber;
}
}
(课程Class)
public class Course {
private int courseCode;
private String courseTitle;
public void setCourseCode(int courseCode){
this.courseCode = courseCode;
}
public int getCourseCode(){
return courseCode;
}
public void setCourseTitle(String courseTitle){
this.courseTitle = courseTitle;
}
public String getCourseTitle(){
return courseTitle;
}
}
错误:
Exception in thread "main" java.lang.NullPointerException
at StudentTest.main(StudentTest.java:14)
Process finished with exit code 1
您似乎还没有为课程 1 设置值。因此您正在尝试检索不存在的值。
你应该打电话给
Course course1 = new Course();
student1.setCourse1(course1);
我可以从您的屏幕截图中收集到的信息,请执行以下操作以消除 NullPointerException
错误:
在您的 Student.java
class 中将变量 course1
初始化为 private Course course1 = new Course()
。对 course2
.