Java 为什么后面的迭代器变成了一个无限循环,甚至认为它有一个return语句呢?

Java 为什么后面的迭代器变成了一个无限循环,甚至认为它有一个return语句呢?,java,Java,下面是我编写的方法,它会变成一个无限循环,无休止地打印“Same Pinch…!!!”(就在print语句之后,我有一个return语句,它应该在打印“Same Pinch…!!!”一次后结束该方法 public boolean contains(Object input) { if(input == null){ throw new IllegalArgumentException(); } AIterator<R> myAsetIterat

下面是我编写的方法,它会变成一个无限循环,无休止地打印“Same Pinch…!!!”(就在print语句之后,我有一个return语句,它应该在打印“Same Pinch…!!!”一次后结束该方法

public boolean contains(Object input) {
    if(input == null){
        throw new IllegalArgumentException();
    }
    AIterator<R> myAsetIterator = (AIterator<R>) this.iterator();
    //use checkType(o) here in if statement and work from there please
    while(myAsetIterator.hasNext()) {
        indexToRemove++;
        if(input.equals(myAsetIterator.next())) {
            System.out.println("Same Pinch...!!!");
            return true;
        }
    }
    return false;
}
公共布尔包含(对象输入){
如果(输入==null){
抛出新的IllegalArgumentException();
}
AIterator myAsetIterator=(AIterator)this.iterator();
//请在if语句中使用checkType(o)并从那里开始工作
while(myAsetIterator.hasNext()){
indexToRemove++;
if(input.equals(myAsetIterator.next())){
System.out.println(“相同的挤压…!!!”);
返回true;
}
}
返回false;
}
这是它的测试方法。它只是主要方法的一部分

private void testConstruction() {
    System.out.println("\nTesting Constructor");
    System.out.print("----------------------------------------");
    System.out.println("----------------------------------------");


    ArrayList<String> temp = new ArrayList<String>();
    temp.add("Butterfinger");
    temp.add("Milky Way");
    temp.add("Kit Kat");
    temp.add("Three Muskateers");
    temp.add("Three Muskateers");

    Aset s3 = new Aset(temp);
    test(s3.getCapacity() == 10,
         "new Aset(temp) should return a capacity of 10: " + s3.getCapacity());
    test(s3.size() == 4,
         "size should return 4: " + s3.size());
    test(s3.toString().equals("<Butterfinger, Milky Way, Kit Kat, Three Muskateers>"),
         "toString should return\n        "+
         "\"<Butterfinger, Milky Way, Kit Kat, Three Muskateers>\":\n       " 
         + s3.toString());

}
private void testConstruction(){
System.out.println(“\n测试构造函数”);
System.out.print(“-------------------------------------------------”;
System.out.println(“--------------------------------------------------------”;
ArrayList temp=新的ArrayList();
临时添加(“Butterfinger”);
临时添加(“银河”);
临时添加(“套件Kat”);
临时添加(“三个火枪手”);
临时添加(“三个火枪手”);
Aset s3=新Aset(温度);
测试(s3.getCapacity()==10,
新Aset(temp)应返回10的容量:“+s3.getCapacity());
测试(s3.size()=4,
“size应该返回4:”+s3.size());
test(s3.toString().equals(“”),
“toString应返回\n”+
“\”\:\n”
+s3.toString());
}

感谢您的时间。:)

您如何知道这是一个无限循环?什么是“当我编译我的项目时,eclipse正在制造地狱”的意思?请尝试清理您的项目并重建它,然后看看它是否解决了这个问题。也许您正在无限循环中调用
contains
。问题可能是函数反复调用contains:contains返回正确,但随后又被一次又一次地调用,使它看起来像是在循环,而实际上其他东西在循环。尝试在print语句所在的位置放置一个断点,然后在调用堆栈上添加更多断点。