刚学集合这部分,照着书上了写了个简单的程序,可是有错误,大家帮忙看看。
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]
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]
if(d == 2)改成 if(d == 2 && aI.hasNext())试试
应该可以了!
补充:运行你上面的程序会抛出NoSuchElementException的异常,NoSuchElementException抛出的原因是当文本扫描器往下扫描,没有符合类型的数据时,就抛出该异常。
还是你把哪儿错了说一下吧,好久没用集合了
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());
}
}
就是有那句才会死循环,不信楼主你可以按照那个改一下,然后你在
while(c>1){
下面加一个输出语句,你会看见你的程序在那不停的跑呀,跑呀,那个累呀~~由于你的LinkedList 在剩两个元素的时候,你的那个c永远是2,条件永远成立,所以死了~~
你这个改的是对的~~
但是按照 你给的初始的程序,楼上的是让你把
if(d == 2)改成 if(d == 2 && aI.hasNext())
只改这一个地方,这个一定是错的