当用户将两个或多个值存储到列表中时,输出显示:
item 3: null
item 4: null
item 5: null
...
item 14623: null
当用户想要输出列表
时就是这种情况case OUTPUT:
{
System.out.println ("The List:");
displayList();
break;
}
这导致了displayList()方法
public static void displayList()
{
for (int i = 0; i <= list.size (); i++)
{
System.out.println ("item " + i + ": " + list.get(i));
}
}
使用list.size()
public int size()
{
for(Node n = header; n.getNext() != null; n = n.getNext())
{
size++;
}
return size;
}
和list.get()
public Object get(int index)
{
Node n = traverse(index);
if (n == null)
{
return null;
}
return n.getData();
}
GETNEXT()
public Node getNext()
{
return next;
}
横动()。我认为这种方法是造成问题的原因
public Node traverse(int index)
{
Node n = header;
if (index < 0)
{
return null;
}
for (int indexTwo = 0; indexTwo < index; indexTwo++)
{
if (n == null)
{
return null;
} // end of if (n == null)
n = n.getNext ();
}
return n;
}
答案 0 :(得分:1)
此部分永远不会执行:
for (int indexTwo = 0; indexTwo < index; indexTwo++)
因为index
变量为0
而indexTwo < index
为false
。
使用:
for (int indexTwo = 0; indexTwo <= index; indexTwo++)
编辑:
另一个问题出在您的size()
方法中:
public int size()
{
for(Node n = header; n.getNext() != null; n = n.getNext())
{
size++;
}
return size;
}
在哪里增加size
变量是静态的?一。所以,它必须在别处初始化。我想你需要把它变成局部变量并在这个方法中初始化它。
另一个问题是,您在每个步骤中都会获得getNext()
两次:
for(Node n = header; n.getNext ()!= null; n = n.getNext ())
只需检查n
而不是n.getNext() != null
null
。