Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的链表的toString()方法只打印第一个元素_Java - Fatal编程技术网

Java 我的链表的toString()方法只打印第一个元素

Java 我的链表的toString()方法只打印第一个元素,java,Java,我从头开始实现自己的java.util.linkedlist,所以我没有使用任何java.util.linkedlist功能。话虽如此,我目前正在尝试创建自己的toString方法。这是我的节点类 private static class Node<T>{ private T data; private Node<T> next; public Node(T d){ next= null; data = d; }

我从头开始实现自己的java.util.linkedlist,所以我没有使用任何java.util.linkedlist功能。话虽如此,我目前正在尝试创建自己的toString方法。这是我的节点类

private static class Node<T>{ 

  private T data; 
  private Node<T> next; 

  public Node(T d){ 
     next= null; 
     data = d; 
  }

  public Node(T d, Node<T> n){
     data = d; 
     next = n; 
  }

  public T getData(){ 
     return data; 
  }

  public void setData(T d){ 
     data = d; 
  }

  public Node<T> getNext(){ 
     return next; 
  }

  public void setNext(Node<T> n){ 
     next = n; 
  }
}
私有静态类节点{
私有T数据;
私有节点下一步;
公共节点(td){
next=null;
数据=d;
}
公共节点(td,节点n){
数据=d;
next=n;
}
公共T getData(){
返回数据;
}
公共无效setData(td){
数据=d;
}
公共节点getNext(){
下一步返回;
}
public void setNext(节点n){
next=n;
}
}
这是我的班级

  private Node<T> start;
  private int size; 
  public ListNoOrder() {
  start = null; 
  size = 0;  
}

public void add(T newElt) {

  Node<T> temp = new Node<T>(newElt); 
  Node<T> current = start; 

  try{ if (newElt==(null));}
  catch (Exception illegalArgumentException){
     throw new IllegalArgumentException();}

  if (start == null){ 
     start = new Node<T>(newElt, null); 
  }

  if(current != null){ 
     while (current.next != null){ 
        current.setNext(temp); 
     }
  }
  size++; 
}

public int length() {
   return size;}
私有节点启动;
私有整数大小;
公共ListNoOrder(){
start=null;
尺寸=0;
}
公共无效添加(T newElt){
节点温度=新节点(newElt);
节点电流=启动;
尝试{if(newElt==(null));}
捕获(异常illegalArgumentException){
抛出新的IllegalArgumentException();}
如果(start==null){
开始=新节点(newElt,null);
}
如果(当前!=null){
while(current.next!=null){
当前设置下一步(温度);
}
}
大小++;
}
公共整数长度(){
返回大小;}
到目前为止,我的toString方法

 public String toString() {
  String toPrint = ""; 
  Node <T> current = start; 

  while (current != null){ 
     toPrint += current.getData(); 
     if (current.next != null)
        toPrint += " ,"; 
     current = current.getNext(); 
  }
 return toPrint; 
}
公共字符串toString(){
字符串toPrint=“”;
节点电流=启动;
while(当前!=null){
toPrint+=current.getData();
if(current.next!=null)
toPrint+=“,”;
current=current.getNext();
}
返回toPrint;
}
当我测试该方法时,它只打印列表的第一个元素

模拟列表=7,8,15,62,38,3 什么样的短跑=7


我已经挣扎了好几个小时了

在您的
add
方法中,您只需在此处开头设置
start
变量

start = new Node<T>(newElt, null); 
即使此条件为真,它也不会真正起作用-此处需要做的是获取最后一个节点(没有
下一个
的节点,并且只将其设置为
下一个
)。差不多

if(current != null) {
    while(current.getNext() != null) {
        current = current.getNext();
    }
    current.setNext(new Node<T>(newElt));
}
else {
    current = new Node<T>(newElt, null); // because current is start
} 
if(当前!=null){
while(current.getNext()!=null){
current=current.getNext();
}
current.setNext(新节点(newElt));
}
否则{
current=新节点(newElt,null);//因为current是start
} 

add
方法中,您只需在此处开头设置
start
变量

start = new Node<T>(newElt, null); 
即使此条件为真,它也不会真正起作用-此处需要做的是获取最后一个节点(没有
下一个
的节点,并且只将其设置为
下一个
)。差不多

if(current != null) {
    while(current.getNext() != null) {
        current = current.getNext();
    }
    current.setNext(new Node<T>(newElt));
}
else {
    current = new Node<T>(newElt, null); // because current is start
} 
if(当前!=null){
while(current.getNext()!=null){
current=current.getNext();
}
current.setNext(新节点(newElt));
}
否则{
current=新节点(newElt,null);//因为current是start
} 

添加列表初始化代码(添加元素并调用toString方法的位置)。toString方法定义在哪里?似乎它可以访问private
next
Node字段?有人告诉我
start
实际上是您链的最后一个节点。您的意思是toString在哪里定义@m、 antkowiczI正在@AxelH实现一个单链接列表…我该如何修复它?它是在
节点
类中还是在
列表顺序
类中?添加列表初始化代码(添加元素并调用toString方法的地方)。toString方法定义在哪里?似乎它可以访问private
next
Node字段?有人告诉我
start
实际上是您链的最后一个节点。您的意思是toString在哪里定义@m、 antkowiczI正在实现一个单链接列表@AxelH…我该如何修复它?它是在
节点
类中还是在
列表顺序
类中?哦,我明白了…那么我该如何设置下一个节点?谢谢谢谢谢谢谢谢…我对数据结构是新手,只是想掌握它的窍门!多谢各位@m、 antkowiczglad来帮忙;)哦,我明白了……那我该如何设置下一个节点呢?谢谢谢谢谢谢……我对数据结构不太熟悉,只是想掌握它的窍门!多谢各位@m、 antkowiczglad来帮忙;)