问下java 的 ListIterator 的问题

为什么一下程序的结果是这样的:code:importjava.util.*;publicclassTest{publicstaticvoidmain(Stringargs... 为什么一下程序的结果是这样的:
code:
import java.util.*;
public class Test {
public static void main (String args[]) {
String elements[] = {"Noodle", "Rice", "Juice", "Vegetable"};
int i=0;
List list = new LinkedList(Arrays.asList(elements));
ListIterator iter = list.listIterator(list.size());
while(iter.hasPrevious()){
if (iter.previous().equals("Rice")){
iter.set("aa");
}
System.out.println(iter.previous());
} } }

输出结果:
Juice
Noodle
为什么 Vegetable 没输出来? 如果我没set的话 就有。
展开
 我来答
hermasx
推荐于2016-08-27 · TA获得超过333个赞
知道小有建树答主
回答量:411
采纳率:100%
帮助的人:230万
展开全部
while(iter.hasPrevious()){
if (iter.previous().equals("Rice")){
iter.set("aa");
}
System.out.println(iter.previous());
}

每调用一次previous()都会使迭代器的指针发生移动
你在循环里边用了两个iter.previous()
这样就会在一次循环里跳过两次previous()
不信你试一下如果你的elements[]数组里边是奇数个元素,会发生错误
你需要用一个临时变量来实现依次循环使用一个previous()

String temp="";
while(iter.hasPrevious()){
temp=iter.previous();
if (temp.equals("Rice")){
iter.set("aa");
}
System.out.println(temp);
}
捌伍侯
2011-04-29 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:112
采纳率:0%
帮助的人:116万
展开全部
你在两个地方用了下一个了,if (iter.previous().equals("Rice"))和System.out.println(iter.previous());
,输出的当然就减半了啊,取得第一个的时候就保存再来,避免用两次就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lyc880513
2011-04-29
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
iter.previous()这个方法不是下标,而是这个List的指针调一次挪一次,当然看不见了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
androidrlj
2011-04-29 · TA获得超过220个赞
知道答主
回答量:82
采纳率:0%
帮助的人:57.2万
展开全部
程序进入了死循环状态
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-29
展开全部
好像没有错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式