2014-03-19 24 views
-1
public void delete(int index) 
{ 
    if (index < 0 || index > _____) 
    { 
     throw new ArrayIndexOutOfBoundsException(); 
    } 

    { 
     Node<X> current = head; 
     for (int i = 0; i < index; i++) 
     { 
      current = current.getLink(); 
     } 

     Node<X> newNode = new Node<X>(); 
     newNode.setLink(current.getLink()); 
     current.setLink(newNode); 
    } 
} 

所以我似乎无法弄清楚在使用节点对象时编写索引outofbounds异常的逻辑。这不像我可以做head.length,所以我会首先使用.getLink循环来找到Null?这不像我可以做index!= null。ArrayOutOfBounds异常

+1

检查'getLink'是否在循环内部返回null,如果它发生异常则抛出异常? – andars

+0

为什么在删除时创建一个newNode?它看起来更像是一个插入操作。 – anonymous

+0

newnode成为我删除后的链接,然后把它放回头部链接 –

回答

2
if (index < 0 || index >= sizeOfList) 
{ 
    throw new ArrayIndexOutOfBoundsException(); 
} 

如果您有函数计算集合的长度。

+0

facepalm,谢谢,我做 –

+0

该函数是否涉及循环遍历每个节点? – andars

+0

是的,多数民众赞成在多数民众赞成在返回大小与计数器 –

1

您需要在编写代码时检查边缘情况。 这是最佳做法。

因为在上面的例子中,你错过了大小为0和列表满的边缘情况,所以你得到了ArrayIndexOutOfBoundsException。