2014-10-20 179 views
-1
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

_a_'return'語句在哪裏? – 2014-10-20 16:18:13

+0

它確實會返回一個字符串。在系統輸出上。 – 2014-10-20 16:19:16

+1

你爲什麼會認爲它返回一個字符串? – SLaks 2014-10-20 16:19:49

回答

6

因爲您在代碼中沒有使用return <variable>聲明。打印System.out不是與返回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(); 
} 
+0

擊敗6秒。 – CPerkins 2014-10-20 16:18:59

+0

哦,好的,謝謝 – 2014-10-20 16:20:02

1

System.out.println只打印到控制檯,它不返回對象。

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(); 
} 
+0

這只是讓OP瞭解他如何能夠回報價值。 – SMA 2014-10-20 16:23:16

+0

這個例子仍然是錯誤的。你應該避免在這個方法中使用'System.out.println'。另外,你只爲'relation'變量返回一個值,這個變量是'char',並且沒有'equals'方法。 – 2014-10-20 16:28:27

0

沒有return語句。除了打印屬性的,你應該建立一個字符串返回(提高返回的字符串的格式將作爲練習留給讀者):

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

塔的不t String是什麼在告訴編譯器該方法應該返回一個字符串。

相關問題