Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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 如何使用迭代器遍历向量并找到某些对象?_Java_Vector_Nullpointerexception_Iterator - Fatal编程技术网

Java 如何使用迭代器遍历向量并找到某些对象?

Java 如何使用迭代器遍历向量并找到某些对象?,java,vector,nullpointerexception,iterator,Java,Vector,Nullpointerexception,Iterator,我的问题是,我需要在向量内容中找到对象,以便将它们打印到面板上。但是,当我使用此代码遍历向量时,它不会到达object=it.next()行。因此,当我试图调用objects paint方法时,它给了我一个空指针,因为对象没有初始化 public PaintingPanel(Vector contents){ this.contents = contents; Iterator it = contents.iterator(); while(it.hasNext())

我的问题是,我需要在向量内容中找到对象,以便将它们打印到面板上。但是,当我使用此代码遍历向量时,它不会到达object=it.next()行。因此,当我试图调用objects paint方法时,它给了我一个空指针,因为对象没有初始化

 public PaintingPanel(Vector contents){
    this.contents = contents;
    Iterator it = contents.iterator();

    while(it.hasNext()){
        if(it.next().equals(ball)){
            ball = (Ball) it.next(); 
        } else if (it.next().equals(bricks)){
            bricks.add((Brick) it.next());
        } else if (it.next().equals(paddle)){
            paddle = (Paddle) it.next();
        }

您正在迭代每个if/else条件。最好存储检索到的对象,然后进行比较。也许是这样的:

       while(it.hasNext()){
        Object itObj = it.next();
        if(itObj.equals(ball)){
            ball = (Ball) it.next(); 
        } else if ((itObj.equals(bricks)){
            bricks.add((Brick) it.next());
        } else if ((itObj.equals(paddle)){
            paddle = (Paddle) it.next();
        }

每次调用
.next()
时,
迭代器将前进一个值。在你的循环中,你前进三次,因此吞下三个条目

改为这样做:

Object element;
while (it.hasNext()) {
    element = it.next();
    if (element.equals(ball)) // etc etc
}

此外,您不应使用
向量
。2014年没有

使用
列表
,其中
X
是正确的类型


最后,如果您的问题是“它没有到达object=it.next()行”,那么您似乎还有其他问题。需要更多的代码!考虑到
if
谓词的奇怪性,问题看起来甚至比这更为根本


特别是,你点击了一个
NullPointerException
,而不是一个
NoSuchElementException
迭代器如果没有更多的元素可以产生,就会抛出它。

回答者,请谈谈
vector
和raw。。这个模式很奇怪,如果等于,为什么需要赋值