Java 如何打印MyList的对象?

Java 如何打印MyList的对象?,java,tostring,Java,Tostring,每当我试图打印MyList对象时,我都会得到“User@”一些十六进制数。 有人能帮我解决打印功能或打印方式的主要问题吗?我听说过试图重写toString函数,但我似乎无法让它工作,也不确定这样做是否正确 public class MyList { private ListElement head, tail; //Forward declaration void add(Object value) { if (tail != null) { tail.next =

每当我试图打印MyList对象时,我都会得到“User@”一些十六进制数。 有人能帮我解决打印功能或打印方式的主要问题吗?我听说过试图重写toString函数,但我似乎无法让它工作,也不确定这样做是否正确

public class MyList {
  private ListElement head, tail; //Forward declaration
  void add(Object value) {
    if (tail != null) {
      tail.next = new ListElement(value);
      tail = tail.next;
    }
    else {
      head = tail = new ListElement(value);
    }
  }
  Object remove() 
  {
    assert head != null; // don't remove on empty list
    Object result = head.value;
    head = head.next;
    if (head == null) { //was that the last?
      tail = null;
    }
    return result;
  }
  //Nested class needed only in the implementation of MyList
  private class ListElement {
    ListElement(Object value) {this.value = value;}
    Object value;
    ListElement next; //defaults to null as desired
  }
  public static void main(String[] args) {
    myList anInstance = new myList();
    String someValue = "A list element";
    anInstance.add(someValue);

    String anotherValue = "Another value";
    anInstance.add(anotherValue);
  }
}
我试过的超控是这样的:

@Override
  public String toString() {
      return String.format(this.head);
  }
}
默认的
toString()
方法打印对象的内存地址(您看到的十六进制数)

如果您想要与众不同的东西,您需要:

@Override
public String toString() 
{
    //do stuff to build a string that describes your object
    //return that string you just built
}
默认的
toString()
方法打印对象的内存地址(您看到的十六进制数)

如果您想要与众不同的东西,您需要:

@Override
public String toString() 
{
    //do stuff to build a string that describes your object
    //return that string you just built
}
你说:

我试过的超控是这样的:

@Override
  public String toString() {
      return String.format(this.head);
  }
}

这是一个开始,现在不只是打印头部,而是使用while循环遍历整个列表,并创建一个包含所有元素信息的新字符串。然后返回该字符串

i、 e

请注意,如果您想变得超级高效,您应该使用StringBuilder来进行连接,但是对于您的应用程序来说,这可能是多余的,并且没有必要

注2:希望ListElement有一个
toString()
方法,如果有,在while循环中使用它来获取每个元素的信息


下一次迭代:

@Override
  public String toString() {

      String returnString = "";

      ListElement currentElement = this.tail;

      while  (currentElement != null) {
         returnString += // *** get toString() info from currentElement
         currentElement = // **** reset currentElement to next element
      }

      return returnString;
  }
}
你说:

我试过的超控是这样的:

@Override
  public String toString() {
      return String.format(this.head);
  }
}

这是一个开始,现在不只是打印头部,而是使用while循环遍历整个列表,并创建一个包含所有元素信息的新字符串。然后返回该字符串

i、 e

请注意,如果您想变得超级高效,您应该使用StringBuilder来进行连接,但是对于您的应用程序来说,这可能是多余的,并且没有必要

注2:希望ListElement有一个
toString()
方法,如果有,在while循环中使用它来获取每个元素的信息


下一次迭代:

@Override
  public String toString() {

      String returnString = "";

      ListElement currentElement = this.tail;

      while  (currentElement != null) {
         returnString += // *** get toString() info from currentElement
         currentElement = // **** reset currentElement to next element
      }

      return returnString;
  }
}

此代码是toString方法的未经测试的实现。试试看

@Override
public String toString()
{
    String myString = "";
    ListElement currentElement = head;
    while (currentElement.next != null)
    {
        if (myString.length > 0)
        {
            myString += ",";
        }
        myString += currentElement.value.toString();
        currentElement = currentElement.next;
    }
    return myString;
}

此代码是toString方法的未经测试的实现。试试看

@Override
public String toString()
{
    String myString = "";
    ListElement currentElement = head;
    while (currentElement.next != null)
    {
        if (myString.length > 0)
        {
            myString += ",";
        }
        myString += currentElement.value.toString();
        currentElement = currentElement.next;
    }
    return myString;
}


您需要实现
toString()
。你知道字符串连接是如何工作的吗?告诉我们你用来打印列表的代码?您可以实现toString(),也可以只打印出所需用户的属性,即User.firstname。您需要实现
toString()
。你知道字符串连接是如何工作的吗?告诉我们你用来打印列表的代码?您可以实现toString(),也可以只打印出所需用户的属性,即User.firstname我知道这一部分,但内部内容是我遇到的问题。有没有关于如何使这项工作的建议?取决于。您希望如何准确描述您的对象?对于对象中给定的一组数据,要打印的文本字符串是什么?我想我只是想看看这个(假设代码中的列表):[“列表元素”,“另一个值”]我知道这部分,但里面的东西是我遇到的问题。有没有关于如何使这项工作的建议?取决于。您希望如何准确描述您的对象?对于对象中的给定数据集,要打印的文本字符串是什么?我想我只是想看看这个(假设代码中的列表):[“一个列表元素”,“另一个值”]我想这就是问题所在。我不认为我可以遍历这个列表,或者至少我不知道如何遍历这个列表。我可以通过阵列,这很好,但我认为这在这里行不通。我需要在类中创建迭代器方法吗?@RichieMiz:你知道如何获取
下一个
元素,对吗?您将继续运行,直到元素用完,直到
next==null
。另外,请参见关于ListElement的
toString()
方法的说明。确保将此方法赋予此类,并且MyList的
toString()
方法在while循环中调用每个ListElement的
toString()
,以获取重要信息。这是否完成了任务:
@Override public String toString(){ListElement=this.tail;String returnString=“”;而(this.tail.next!=null){returnString=returnString+liselement;liselement=this.tail.next;}returnString;}
@RichieMiz:1)只发布代码作为问题的编辑,因为它在注释中很难阅读。2) 只有在您首先测试了代码之后,才可以问
“这能完成任务吗?”
。如果它有效,那么你知道答案。如果它没有编译,那么就不要发布它。3) 请看编辑回答。我的错,我是新来的。我真的不明白您在ListElement中添加
toString()
方法是什么意思。我想这会导致我不理解代码中的“***从currentElement获取toString()信息”部分。其他一切对我都有意义。通过将
currentElement
设置为
this.tail.next
,我可以得到下一个元素。我想这就是问题所在。我不认为我可以遍历这个列表,或者至少我不知道如何遍历这个列表。我可以通过阵列,这很好,但我认为这在这里行不通。我需要在类中创建迭代器方法吗?@RichieMiz:你知道如何获取
下一个
元素,对吗?您将继续运行,直到元素用完,直到
next==null
。另外,请参见关于ListElement的
toString()
方法的说明。确保将此方法赋予此类,并且MyList的
toString()
方法在while循环中调用每个ListElement的
toString()
,以获取重要信息。这是否完成了任务:
@Override public String toString(){ListElement=this.tail;String returnString=“”;而(