Java的循环问题

Java的循环问题,java,loops,for-loop,iteration,Java,Loops,For Loop,Iteration,这很难解释,但基本思想是我们有两个数组列表。比较列表1和列表2,如果条目匹配,则打印数组列表+1,如果不匹配,则从数组列表1返回元素。比较很好,但问题在于打印结果。当我只想要一个或另一个时,我的原始设计同时打印了翻译和原始单词。这是原始设计: public void compareLists(){ String nameSearch; for(PirateDictionary w: words){ nameSearch = w.toString();

这很难解释,但基本思想是我们有两个数组列表。比较列表1和列表2,如果条目匹配,则打印数组列表+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());

            }

        }

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

}
public void compareLists(){
字符串名称搜索;
用于(盗版:文字){
nameSearch=w.toString();
迭代器it=短语。迭代器();
while(it.hasNext())
{
短语c=it.next();
if(c.getName().equals(nameSearch)){
System.out.println(it.next().toString());
}
}
System.out.println(w.toString());
}
}
下面是一个不同的尝试,我很确定这一个比较接近,因为你想做一个或另一个,并且第一个设计总是包括这两个,所以我认为这里必须使用循环,但我不知道如何实现它

for(PirateDictionary w: words){

        nameSearch = w.toString();
        Iterator<Phrase> it = phrases.iterator();
        Phrase c = it.next();
        if(w.toString().equals(c.getName())){

            while(it.hasNext())
            {

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

                }

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

    }
for(盗版药w:words){
nameSearch=w.toString();
迭代器it=短语。迭代器();
短语c=it.next();
如果(w.toString().equals(c.getName())){
while(it.hasNext())
{
if(c.getName().equals(nameSearch)){
System.out.println(it.next().toString());
}
}
}
否则{
System.out.println(w.toString());
}
}
我的建议:

 for(PirateDictionary w: words){

    nameSearch = w.toString();
    Iterator<Phrase> it = phrases.iterator();
    boolean found = false;

    while(it.hasNext() && !found) {

       Phrase c = it.next();

       if (c.getName().equals(nameSearch))  {
           System.out.println( c.getName());
           found = true;
       }
    }

    if (!found)
        System.out.println(w.toString());
}
for(盗版药w:words){
nameSearch=w.toString();
迭代器it=短语。迭代器();
布尔值=false;
while(it.hasNext()&&!found){
短语c=it.next();
if(c.getName().equals(nameSearch)){
System.out.println(c.getName());
发现=真;
}
}
如果(!找到)
System.out.println(w.toString());
}

我们使用
布尔值来记住是否找到匹配项,如果没有找到匹配项,我们只需打印出正常单词。还要注意不要使用
it.next()
两次,因为这样会跳过一个元素

是否要为迭代器中的每个元素打印一个或另一个?如果列表1和列表2匹配,那么我希望它打印列表2+1,因此假设列表1中的女性匹配列表2中的女性,那么您将要打印女性+1,即“lass”。目前我只能在我只想要翻译的时候把它打印出来,一个简单的旗子就能完成任务,非常感谢