为什么这段代码不返回字符串?

时间:2014-10-20 16:17:45

标签: java

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");
    }

这不起作用,因为它说代码没有返回字符串,我也不知道为什么。

5 个答案:

答案 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告诉编译器该方法应该返回一个字符串。