首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

请帮我看看下面这个堆栈有关问题在哪里

2011-12-19 
请帮我看看下面这个堆栈问题在哪里package Endimport java.util.*public class StackL {private LinkedL

请帮我看看下面这个堆栈问题在哪里
package End;
import java.util.*;

public class StackL {
private LinkedList list=new LinkedList();
void push(Object o){
list.addFirst(o);
}
Object top(){
return list.getFirst();
}
Object pop(){
return list.removeFirst();
}
int getListSize(){
return list.size();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StackL stack=new StackL();
for(int i=0;i<5;i++){
stack.push(new Car(i));
}
for(int i=0;i<stack.getListSize();i++){
Car car=(Car)stack.pop();
System.out.println(car.getNumber());
}

}

}

class Car{
private int nu;
Car(int number){
nu=number;
}
int getNumber(){
return nu;
}
}

为什么打印出来的是
4
3
2

还有的1 和0哪里去了

[解决办法]
for(int i=0;i <stack.getListSize();i++){ 
Car car=(Car)stack.pop(); 
System.out.println(car.getNumber()); 


这段写错了。
Car car=(Car)stack.pop(); 把一个car已经拿出来了,这时for里面的stack.getListSize()就少了,而你还要i++一下,所以循环次数并不是stack中的数目,而是少一些。

改为如下即可:

Java code
int length = stack.getListSize();for(int i=0;i < length; i++){     Car car=(Car)stack.pop();     System.out.println(car.getNumber()); } 

热点排行