您的位置:首页 > 其它

for循环递增和递减的区别

2009-12-05 11:22 507 查看
*************跪求解答**************

哈哈,先一下问题原因,昨天面试有个题目是模拟一个栈。面试完成后,回家自己测试了一下自己写的程序,结果产生了该文章

我用一个数据来模拟这个栈,但是在用for循环测试的时候发现:第一次用: for(int i = 0; i <= as.size(); i++)

输出结果:dcb 少了第一入栈的元素。

第二次改成:

for(int i = as.size(); i > 0 ; i--) 可以正常运行。

自己不明白其中的问题,希望高手可以指点,不胜感激.....................

/**
* 数组实现的堆栈
* @author Administrator
*
*/
public class ArrayStack {

private Object[] elements;
private int size;

public ArrayStack(int size) {
elements = new Object[size];
size = 0;
}

//初始化一个size = 50的数组
public ArrayStack() {
this(50);
}

//return stack size
public int size() {
return size;
}

//isEmpty
public boolean isEmpty() {
return this.size() == 0;
}

//insert into stack
public void push(Object obj) {
elements[size] = obj;
size++;
}

//return object
public Object pop() {
if(!this.isEmpty()) {
Object obj = elements[size - 1];
elements[size - 1] = null;
size--;
return obj;
}else {
return null;
}
}

public static void main(String[] args) {
ArrayStack as = new ArrayStack();
as.push("a");
as.push("b");
as.push("c");
as.push("d");

System.out.println("------------------------------------------------------------------");
// test1.正常运行

for(int i = as.size(); i > 0 ; i--) {
System.out.println(as.pop());
}
System.out.println("------------------------------------------------------------------");

//test2.
for(int i = 0; i <= as.size(); i++) {
System.out.println(i);
System.out.println(as.pop());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: