刚学集合这部分,照着书上了写了个简单的程序,可是有错误,大家帮忙看看。
import java.util.*;
public class pailie  {
public static void main (String args[])throws Exception{
LinkedList<Integer>  aq = new LinkedList<Integer>();
aq.add(new Integer(1));
aq.add(new Integer(2));
aq.add(new Integer(3));
aq.add(new Integer(4));
aq.add(new Integer(5));
aq.add(new Integer(6));
aq.add(new Integer(7));  ListIterator<Integer> aI = aq.listIterator();
 int c=aq.size();
 int d=0;
 while(c>1){
 if(aI.hasNext()){
 aI.next();
 d++;
 if(d==2){
System.out.print(aI.next());  aI.remove();  d=0;
 c--;  }
}  else{ aI = aq.listIterator();
}
}  }
}
[/code]

解决方案 »

  1.   

    你把
    if(d == 2)改成 if(d == 2 && aI.hasNext())试试
    应该可以了!
      

  2.   

    正解!
    补充:运行你上面的程序会抛出NoSuchElementException的异常,NoSuchElementException抛出的原因是当文本扫描器往下扫描,没有符合类型的数据时,就抛出该异常。 
      

  3.   

    不会的,因为这个程序中有这样一句话——“aI.next();”所以就不会出现死循环了!
      

  4.   

    ListIterator <Integer> aI = aq.listIterator();怎么这么陌生呢,这里不报错吗?
    还是你把哪儿错了说一下吧,好久没用集合了
      

  5.   

    我根据楼上大家的提示,修改了下,大家看看
    import java.util.*;
    public class pailie  {
    public static void main (String args[])throws Exception{
    LinkedList<Integer>  aq = new LinkedList<Integer>();
    aq.add(new Integer(1));
    aq.add(new Integer(2));
    aq.add(new Integer(3));
    aq.add(new Integer(4));
    aq.add(new Integer(5));
    aq.add(new Integer(6));
    aq.add(new Integer(7));
    aq.add(new Integer(8));
    aq.add(new Integer(9));
    aq.add(new Integer(10));
    aq.add(new Integer(11));
    aq.add(new Integer(12));
    aq.add(new Integer(13));
    aq.add(new Integer(14));  ListIterator<Integer> aI = aq.listIterator();
     int c=aq.size();
     int d=0;
     while(c>1){
      if((d == 2 )&& aI.hasNext()){
    System.out.print("**"+aI.next());  aI.remove();  d=0;
     c--;  }
    if(aI.hasNext()){
     aI.next();
     d++;
    } else{ aI = aq.listIterator();
    }
    }
     System.out.println();
     System.out.println("=====================");
     System.out.println("最后留下的数字为:"+aq.toString());
     }
    }
      

  6.   


    就是有那句才会死循环,不信楼主你可以按照那个改一下,然后你在
    while(c>1){ 
    下面加一个输出语句,你会看见你的程序在那不停的跑呀,跑呀,那个累呀~~由于你的LinkedList 在剩两个元素的时候,你的那个c永远是2,条件永远成立,所以死了~~
      

  7.   


    你这个改的是对的~~
    但是按照 你给的初始的程序,楼上的是让你把
    if(d == 2)改成 if(d == 2 && aI.hasNext())
    只改这一个地方,这个一定是错的