当我希望它继续进行时,迭代在第一个匹配实例之后停止

时间:2013-11-23 09:52:58

标签: java loops for-loop iteration

所以这里的想法是我正在比较两个ArrayLists。如果来自PirateDictionary的单词与Phrase中的短语匹配则打印短语+1,如果它不匹配,则只需返回原始单词。现在我的代码做了比较就好了,但是当它进入第一个匹配的情况时,它按照预期打印出短语+1,但是当仍然有要比较的单词时它会停止,这就是我不知道我在哪里我失踪了。这是我正在使用的方法:

 public void compareLists(){
        String nameSearch;

        for(PirateDictionary w: words){
            nameSearch = w.toString();
            Iterator<Phrase> it = phrases.iterator();
            while(it.hasNext())
            {
                Phrase c = it.next();
                if (c.getName().equals(nameSearch))  {
                    System.out.println( it.next().toString());      
                    return;
                }

            }
            System.out.println(w.toString());
        }
    }

如果有人能看到这个,我会很感激。

1 个答案:

答案 0 :(得分:0)

如你所说,你的代码工作正常,直到达到第一个匹配的情况。在您的代码中,这是if - 子句中的条件被评估为true的点:

if (c.getName().equals(nameSearch))  {
  System.out.println( it.next().toString());      
 return;
}

如果找到匹配项,匹配的字符串将打印到System.out,然后您返回(保留方法) - 因此不会进行其他比较。请删除return语句以继续检查其余字词。