循环打印出来 - java

时间:2013-09-24 11:03:41

标签: java while-loop

我正在尝试打印链表中的所有元素。但是,我无法打印出完整的项目清单。

public void display()
    {
            int count =0;
            if (head == null)
            {
                    System.out.println("List is empty");
            }
            else {
                    ListNode temp = head;
                    while (temp.getNext() != null)
                    {
                            System.out.println(temp.getElement() +" ");
                            count ++;
                            temp = temp.getNext();

                    }
            System.out.println("Total element: "+count);
            }
    }

//使用的方法

public ListNode getNext()
    {
            return this.next;
    }

    /*get the element of Listnode*/

    public int getElement()
    {
            return this.element;
    }

请告知哪部分是错误的。

4 个答案:

答案 0 :(得分:5)

您省略了链表的最后一个元素(因为它没有下一个元素)。 while条件应该是这样的:

  while (temp != null)

答案 1 :(得分:1)

由于许多答案都正确地说你的while循环错过了最后一个条目,因为当 next 条目为null时它退出循环,因此不会在最后一个条目上调用.getElement()列表。这一切都假设您的ListNode设置正确。

使用迭代器

所有这些似乎都在复制迭代器的行为,考虑使用一个迭代器,一个示例如下;

import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;

public class Arraylist{
    public static void main(String[] args){

        Collection<String> al=new ArrayList<String> ();
        al.add("one");
        al.add("two");
        al.add("three");

        Iterator<String> iterator=al.iterator();

        while(iterator.hasNext()){
            System.err.println(iterator.next());
        }
    }


}

答案 2 :(得分:1)

while (temp.getNext() != null)
{
    System.out.println(temp.getElement() +" ");
    count ++;
    temp = temp.getNext();
}

在打印最后一项之前始终停止。您需要打印该项目,然后在next为空时停止。

答案 3 :(得分:1)

将您的while循环条件更改为:

while (temp != null) 

由于您检查了下一个节点的存在,而不是它不存在,因此将不会打印当前节点,这将使您打印除最后一个节点之外的所有元素