gpt4 book ai didi

java - 内部类问题,toString冲突

转载 作者:行者123 更新时间:2023-12-02 00:08:44 25 4
gpt4 key购买 nike

根据《Head First》书中的一个示例,我遇到了一些麻烦,其中 toString 方法导致我的学生出现问题,并且他们的大学和家庭地址输出正确。我想做的就是输出,如果学生的大学地址为空,则使用他的家庭地址,否则使用大学地址。

但是我的测试数据如下所示

John John72 Nottingham Drive

John72 Nottingham Drive

public class Test {
public static void main(String[] args){
Student student1 = new Student("John", 19, "Walkers Way");
student1.setUniAddress(72, "Nottingham Drive");
System.out.print(student1.toString());
}
}

其他类

public class Student {
private String name;
private Address homeAddress, uniAddress;

public Student(String name, int houseNumber, String homeStreet){
this.name = name;
this.homeAddress = new Address(houseNumber, homeStreet);
}



public String getName() { return this.name; }
public Address getHomeAddress(){
if(this.uniAddress == null){
return this.homeAddress;
}else{
return getUniAddress();//this.uniAddress;
}
}

public Address getUniAddress() { return this.uniAddress; }
public void setUniAddress(int number, String add){
Address address = new Address(number, add);
uniAddress = address;
}

@Override
public String toString(){
return getName() + " " + getHomeAddress() + " " + getUniAddress() + "\n";
}

public class Address{
private int number;
private String street;
public Address(int no, String street){
this.number = no;
this.street = street;
}

@Override
public String toString(){
return name + number + " " + street + "\n";
}
}

}

最佳答案

您的getHomeAddress方法负责显示uni地址,因此这一行:

return getName() + " " + getHomeAddress() + " " + getUniAddress() + "\n";

可以缩短为:

return getName() + " " + getHomeAddress() + " " + "\n";

否则您的getHomeAddress方法将提取uni地址,然后您的getUniAddress方法将再次提取uni地址。

此外,在您的地址 toString 中,您正在提取该人的姓名,但您可能不是故意的(并且您可能不希望在此处使用换行符,因为您的其他 中有一个换行符toString 方法)。

@Override
public String toString(){
return number + " " + street;
}

关于java - 内部类问题,toString冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13313222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com