public String toString()
{
System.out.println(lastName + ", " + firstName);
System.out.println(phoneNumber);
if (relationship == 'F')
System.out.println("Friend");
else if (relationship == 'M')
System.out.println("Family Member");
else if (relationship == 'B')
System.out.println("Buisness Associate");
else System.out.println("Not Specified");
}
这不起作用,因为它说代码没有返回字符串,我也不知道为什么。
答案 0 :(得分:6)
因为您没有在代码中使用return <variable>
语句。在System.out
流 中打印与返回String
相同。
而是打印要输出的String的所需内容,最好将所有内容附加到String中并将此String返回给客户端。
以下是一个例子:
public String toString() {
StringBuilder result = new StringBuilder(lastName)
.append(", ")
.append(firstName)
.append('\n')
.append(phoneNumber);
if (relationship == 'F')
result.append(" Friend");
else if (relationship == 'M')
result.append(" Family Member");
else if (relationship == 'B')
result.append(" Business Associate");
else result.append(" Not Specified");
return result.toString();
}
另外,请尝试toString
方法返回一种方法来理解对象中存储的数据。这是另一个例子:
public String toString() {
StringBuilder result = new StringBuilder("Name: ")
.append(lastName)
.append(", ")
.append(firstName)
.append(". Phone Number: ")
.append(phoneNumber)
.append(". Relationship: ");
if (relationship == 'F')
result.append(" Friend");
else if (relationship == 'M')
result.append(" Family Member");
else if (relationship == 'B')
result.append(" Business Associate");
else result.append(" Not Specified");
return result.toString();
}
答案 1 :(得分:1)
System.out.println
仅打印到控制台,它不会返回对象。
答案 2 :(得分:1)
尝试返回如下字符串:
public String toString()
{
StringBuilder output = new StringBuilder(lastName + ", " + firstName);
output.append(phoneNumber);
if (relationship == 'F')
return output.append("Friend").toString();
else if (relationship == 'M')
return output.append("Family Member").toString();
else if (relationship == 'B')
return output.append("Buisness Associate").toString();
else return output.append("Not Specified").toString();
}
答案 3 :(得分:0)
没有退货声明。您应该构建一个要返回的字符串,而不是打印属性(改进返回的String的格式作为读者的练习):
public String toString() {
StringBuilder s = new StringBuilder();
s.append(lastName).append(", ").append(firstName);
s.append(phoneNumber);
if (relationship == 'F')
s.append("Friend");
else if (relationship == 'M')
s.append("Family Member");
else if (relationship == 'B')
s.append("Buisness Associate");
else s.append("Not Specified");
return s.toString();
}
答案 4 :(得分:0)
通常,当您使用“toString()”函数时,它将像这样使用
// replace "Person" with what your class is actually named
String personString = Person.toString();
System.out.println(personString);
因此,您不需要在应用程序中实际打印到控制台,而是需要告诉toString()
函数,它需要返回什么值。
您使用返回关键字来执行此操作
试试这个
public String toString()
{
String result = lastName + ", " + firstName;
// feel free to change `result` more
return result;
}
不要使用方法签名
public String toString()
签名中的String
告诉编译器该方法应该返回一个字符串。