而不是
for (var item = iter.next(); iter.hasNext(); iter.next()) {
System.out.println(item);
}
您可以使用以下选项,但仍不是最佳 Select :
for (; iter.hasNext();) {
System.out.println(iter.next());
}
最佳 Select 是使用While循环,如下所示:
while (iter.hasNext()) {
System.out.println(iter.next());
}
问题出在您的for循环中.
这是for循环的 struct
for(initialization; exit condition; update variables)
个
在您的例子中,您使用var item = iter.next()
作为初始化式,这意味着item
是用第一个值初始化的.
在打印该值之后,作为update variables
部分,您完成了iter.next()
,这将返回下一个值.但你从来没有储存过它.
在update variables
之后,它将判断退出条件.由于已经提取了第二个值,因此iter.hasNext()
将返回FALSE,因此for循环将退出.因此,在您的例子中,只打印了一个值.第二个值没有存储在任何变量中.您可以将item = iter.next()
作为更新部分,但仍有item
将被更新,但由于iter.hasNext()
条件将在更新变量后返回FALSE,因此它不会仍然被打印.