2017-04-20 89 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