2017-04-20 88 views
0

我會盡量使這個儘可能簡單。 我有一個類寵物的對象:使用對象的鏈接列表的Java toString打印錯誤

public class Pet { 
private String name; 
private int treats; 
private Coordinate coor; 
} 

注意coor僅僅是包含2輛花車,經度和緯度的對象。

在我的可執行類中,我調用了我的PetList(鏈接列表)類的printAll()函數。

PetList List = new PetList(); 
... // adding nodes to my linkedlist etc. 
... 
List.printAll(); 

在我printAll()函數,我打電話給我的寵物類中我的toString功能:

public void printAll() { 
    LinkNode temp = first; 
    while(temp != null) { 
     System.out.print(toString()); 
     System.out.println(); 
     temp = temp.next; 
    } 
} 

在我的toString()函數,創建一個StringBuilder:

// Most of this appending is formatting 
public String toString() { 
    StringBuilder sb = new StringBuilder(); 
    sb.append(name); 
    // sb.append("{"); 
    sb.append(treats); 
    // sb.append("} "); 
    //if(coor.getLatitude() >= 0) { 
    // sb.append("+"); 
    //} 
    sb.append(coor.getLatitude()); 
    // sb.append(" "); 
    //if(coor.getLongitude() >= 0) { 
    // sb.append("+"); 
    //} 
    sb.append(coor.getLongitude()); 
    return sb.toString(); 
} 

我直到EOF讀取輸入:

add 3.0 3.0 Three // add(adds a node) with 2 floats (longitude & latitude) and Three(a name) 
add 2.0 2.0 Two 
add 1.0 1.0 One 

但是,當我打電話打印(這就要求printAll())我得到這樣的:

add 3.0 3.0 Three 
add 2.0 2.0 Two 
add 1.0 1.0 One 
print 
[email protected] 
[email protected] 
[email protected] 

但我希望這種情況發生:

add 3.0 3.0 Three 
add 2.0 2.0 Two 
add 1.0 1.0 One 
print 
One{0} +1.0, +1.0 
Two{0} +2.0, +2.0 
Three{0} +3.0, +3.0 

我不知道,但是我收到一個參考,而不是任何實際數據?這是否是由於我所顯示的代碼中的任何內容?還是在別的地方?任何幫助表示感謝,謝謝!

編輯:

Here is the beginning of my PetList class: 
public class PetList { 
    protected class LinkNode { 
     protected LinkNode next; 
     protected LinkNode prev; 
     protected Pet animal; 

     public LinkNode() { 
      next = prev = null; 
     } 
    } 

這裏是我叫現在的toString功能:

//public void printAll() { 
// LinkNode temp = first; 
// while(temp != null) { 
     System.out.print(animal.toString()); 
//  System.out.println(); 
//  temp = temp.next; 
// } 
//} 

這裏是在編譯的時候我收到錯誤:

PetList.java:36: error: cannot find symbol 
      System.out.print(animal.toString()); 
          ^
    symbol: variable animal 
    location: class PetList 
+4

貴PetList類有自己的toString()方法?現在它使用Object.toString()方法。 – Jason

+0

哦,我的天啊,不,所以我一直沒有一直在調用toString方法lol – Coder117

+0

嗯,在我的PetList類中我有一個'受保護的寵物動物;'但是當我添加動物到我的toString調用時,它給了我一個錯誤。修改過的調用:'System.out.print(animal.toString());'錯誤:'./PetList.java:37:錯誤:找不到符號 System.out.print(animal.toString());' – Coder117

回答

1

根據您的最新代碼片段:

 System.out.print(animal.toString()); 

...應該是

 System.out.print(temp.animal.toString()); 

由於animalLinkNode一個實例變量,而不是PetList

+0

它工作!非常感謝! – Coder117