当前位置: 代码迷 >> Eclipse >> 请帮我看看下面这个堆栈有关问题在哪里
  详细解决方案

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

热度:123   发布时间:2016-04-23 14:17:43.0
请帮我看看下面这个堆栈问题在哪里
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()); }
  相关解决方案