import java.io.*;
import javax.swing.JOptionPane;
import java.util.*;
public class lesson {
static void printAll(ArrayList<String> names, int len)
{
Iterator it = names.iterator();
while( it.hasNext() )
{
if( ((String)it.next()).length() == len)
System.out.println( it.next() );
}
}
public static void main(String[] args) throws IOException {
ArrayList<String> names = new ArrayList<String>();
names.add("Jan");
names.add("Ivan");
names.add("Tom");
names.add("George");
printAll(names,3);
}
}
为什么输出 Ivan, George, 不应该只打印长度为 3 的名字(Jan 和 Tom)?
最佳答案
if( ((String)it.next()).length() == len)
System.out.println( it.next() );
}
it.next()
将迭代器前进到一个元素。您正在执行 it.next()
两次。
if( ((String)it.next()).length() == len)
前进一次,现在迭代器指向 next()
将其更改为如下所示:
it.next() prints next() element in iterator.
{
//Get once.
String nextName = (String)it.next();
if( nextName .length() == len)
System.out.println(nextName );
}
关于java - 常见迭代器错误的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13166908/