我正在尝试使用 LibraryCard 中的 toString 方法来访问姓名和电子邮件。但是,当我使用 owner.getName() 时,它会给我一个空指针异常错误。我也在努力把卡片做成特定的人。
public class Student{
public String name;
public String email;
public Student(){
name = "UNASSIGNED";
email = "UNASSIGNED";
}
public String getEmail(){
return email;
}
public String getName(){
return name;
}
public void setEmail(String newEmail){
email = newEmail;
}
public void setName(String newName){
name = newName;
}
}
和
public class LibraryCard{
public Student owner;
public int borrowCount;
public LibraryCard(){
owner = null;
borrowCount = 0;
}
public void checkOut(int bookNum){
borrowCount += bookNum;
}
public int getNumberOfooks(){
return borrowCount;
}
public Student getOwnerName(){
return owner;
}
public void setOwner(Student object){
owner = object;
}
public String toString(){
return "\nCard1 Info:\n\t Owner Name: " + owner.getName() + "\n\t Email: " + owner.getEmail() + "\n\t Books borrowed: " + borrowCount ;
}
}
和测试人员
public class LibraryCardTester{
public static void main(String args[]){
Student student1 = new Student();
student1.setName("James Johnson");
student1.setEmail(student1.getName()+"@gmail.edu");
System.out.println("Name: " + student1.getName());
System.out.println("Email: " +student1.getEmail());
Student student2 = new Student();
student2.setName("Barack Obama");
student2.setEmail(student1.Name()+"@gmail.edu");
System.out.println("Name: " + student2.getName());
System.out.println("Email: " +student2.getEmail());
LibraryCard card1 = new LibraryCard();
card1.checkOut(3);
LibraryCard card2 = new LibraryCard();
card2.checkOut(2);
LibraryCard card3 = new LibraryCard();
card3.checkOut(5);
System.out.println(card1.toString());
System.out.println(card2.toString());
System.out.println(card3.toString());
}
}
最佳答案
在我看来你还没有为借书证设置所有者:
card1.setOwner(student1);
您的构造函数将所有者设置为 null,因此除非您使用 setOwner()
方法设置所有者,否则所有者将始终为 null,这意味着您正在调用 getName()
空对象上的方法导致 NullPointerException
:
public LibraryCard(){
owner = null;
borrowCount = 0;
}
关于java - 如何从另一个类访问一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35488814/