使用对象的链表的 Java toString 打印错误

标签 java io reference linked-list

我会尽量让事情变得简单。 我有一类 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());

由于animalLinkNode的实例变量,而不是PetList

关于使用对象的链表的 Java toString 打印错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43510215/

相关文章:

java - Android 上的日期格式 : Unparseable date

java - 替代文件锁定以确保只能启动一个应用程序实例

java - 我应该使用哪种 EOF 检查方法?

java - 如何将 HashMultiset<String> 转换为 Map<String,Integer>

java - 在任何 Activity 中显示来自后台进程的警报对话框

Java Swing : Mouseover text on JComboBox items?

javascript - Uncaught ReferenceError : model is not defined

byte[] 与文件流的 char[] 的 Java 性能

c++ - 改变 const std::string 引用的引用

python - 函数返回对自身 Python 的引用