Java的循环问题
这很难解释,但基本思想是我们有两个数组列表。比较列表1和列表2,如果条目匹配,则打印数组列表+1,如果不匹配,则从数组列表1返回元素。比较很好,但问题在于打印结果。当我只想要一个或另一个时,我的原始设计同时打印了翻译和原始单词。这是原始设计: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();
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”。目前我只能在我只想要翻译的时候把它打印出来,一个简单的旗子就能完成任务,非常感谢