gpt4 book ai didi

java toString() 从类返回 null

转载 作者:行者123 更新时间:2023-12-01 07:35:15 25 4
gpt4 key购买 nike

这是 Java,使用 BlueJ。

我有四个类,分别为 Person、Letter、Address 和 PhoneNumber。在每个方法中,我重写 toString() 方法以返回我想要从类中获得的值的串联字符串。当调用 Letter toString() 时,它对所有值返回 null。

这个想法是使用硬编码信息,将其传递到适当的类,并以标准字母格式返回。

打印硬编码信息的方向正确吗,还是应该走不同的路线?这是一道作业题,但我感觉自己碰壁了。

以下是类(class):

public class Person
{
private static String aPerson;
private String first;
private String middle;
private String last;
private Address address;
private PhoneNumber phone;

public String getFirst()
{
return this.first;
}

public void setFirst(String FirstName)
{
this.first = FirstName;
}

public String getMiddle()
{
return this.middle;
}

public void setMiddle(String MiddleName)
{
this.middle = MiddleName;
}

public String getLast()
{
return this.last;
}

public void setLast(String LastName)
{
this.last = LastName;
}

public Address getMyAddress()
{
return this.address;
}
public void setMyAddress(Address Address)
{
this.address = Address;
}

public PhoneNumber getMyPhoneNum()
{
return this.phone;
}

public void setMyPhoneNum(PhoneNumber Number)
{
this.phone = Number;
}

public Person()
{
aPerson = getFirst() + getMiddle() + getLast() + getMyAddress() +
getMyPhoneNum();
}

public String toString()
{
return aPerson;
}
}

电话号码:

public class PhoneNumber
{
private String number;
private int areaCode = 0;
private int phonePrefix = 0;
private int phoneLineNum = 0;
private int phoneExtension = 0;

public String getNumber()
{
return number;
}

public void setNumber(String Number)
{
number = Number;
}

public int getAreaCode()
{
return areaCode;
}

public void setAreaCode(int AreaCode)
{
areaCode = AreaCode;
}

public int getPrefix()
{
return phonePrefix;
}

public void setPrefix(int Prefix)
{
phonePrefix = Prefix;
}

public int getPhoneLineNumber()
{
return phoneLineNum;
}

public void setLineNum(int PhoneNumber)
{
phoneLineNum = PhoneNumber;
}

public int getExtension()
{
return phoneExtension;
}

public void setExtension(int Extension)
{
phoneExtension = Extension;
}
}

地址:

public class Address
{
private String state;
private String anAddress;
private String address;
private String city;
private int zip = 0;

public String getState()
{
return state;
}

public void setState(String State)
{
state = State;
}

public String getAddress()
{
return address;
}

public void setAddress(String Address)
{
address = Address;
}

public String getCity()
{
return city;
}

public void setCity(String City)
{
city = City;
}

public int getZip()
{
return zip;
}

public void setZip(int Zip)
{
zip = Zip;
}

public Address()
{
anAddress = getState() + getAddress() + getCity() + getZip();
}

public String toString()
{
return this.anAddress;
}
}

信:

public class Letter
{
private Person to;
private Person from;
private String body;
private String finishedLetter;

public Person getTo()
{
return to;
}

public void setTo(Person newValue)
{
to = newValue;
}

public Person getFrom()
{
return from;
}

public void setFrom(Person newValue)
{
from = newValue;
}

public String getBody()
{
return body;
}

public void setBody(String newValue)
{
body = newValue;
}

public Letter()
{
finishedLetter = getTo() + " \n" + getFrom() + " \n" + getBody();
}

public String toString()
{
return finishedLetter;
}
}

主要:

public class MainClass
{
public static void main(String args[])
{
PhoneNumber phone1 = new PhoneNumber();
phone1.setAreaCode(417);
phone1.setPrefix(447);
phone1.setLineNum(7533);
phone1.setExtension(0);

PhoneNumber phone2 = new PhoneNumber();
phone2.setAreaCode(210);
phone2.setPrefix(336);
phone2.setLineNum(4343);
phone2.setExtension(9850);

Address address1 = new Address();

address1.setState("MO");
address1.setAddress("1001 East Chestnut Expressway");
address1.setCity("Springfield");
address1.setZip(65807);

Address address2 = new Address();

address2.setState("TX");
address2.setAddress("4800 Calhoun Road");
address2.setCity("Houston");
address2.setZip(77004);

Person person1 = new Person();

person1.setFirst("Shane");
person1.setMiddle("Carroll");
person1.setLast("May");
person1.setMyAddress(address1);
person1.setMyPhoneNum(phone1);

Person person2 = new Person();

person2.setFirst("Ted");
person2.setMiddle("Anthony");
person2.setLast("Nugent");
person2.setMyAddress(address2);
person2.setMyPhoneNum(phone2);

Letter aLetter = new Letter();

aLetter.setTo(person2);
aLetter.setFrom(person1);
aLetter.setBody("This is the body");

System.out.println(aLetter.toString());
}
}

最佳答案

在填充这些字段之前,您的 Letter 构造函数正在调用诸如 getTo()getFrom() 之类的方法。不要这样做,因为您的 finishLetter 字符串永远不会正确“完成”。即,

public Letter()
{
finishedLetter = getTo() + " \n" + getFrom() + " \n" + getBody();
}

将始终导致 null + "\n"+ null + "\n"+ null

也许这种代码应该放在 toString() 方法中。

关于java toString() 从类返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12966595/

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