我会尽量让事情变得简单。 我有一类 Pet 对象:
public class Pet {
private String name;
private int treats;
private Coordinate coor;
}
请注意,coor
只是一个包含 2 个 float 、经度和纬度的对象。
在我的可执行类中,我调用 PetList(链接列表)类的 printAll() 函数。
PetList List = new PetList();
... // adding nodes to my linkedlist etc.
...
List.printAll();
在 printAll() 函数中,我在 Pet 类中调用 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
但是当我调用 print (它调用 printAll())时,我得到了这个:
add 3.0 3.0 Three
add 2.0 2.0 Two
add 1.0 1.0 One
print
PetList@33909752
PetList@33909752
PetList@33909752
但我希望这发生:
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
最佳答案
基于您最新的代码片段:
System.out.print(animal.toString());
...应该是
System.out.print(temp.animal.toString());
由于animal
是LinkNode
的实例变量,而不是PetList
关于使用对象的链表的 Java toString 打印错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43510215/