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()); }