要求指出下面这个程序的潜在问题,(此程序compile没问题, 一般操作没问题)import java.util.*;public class arrayStack {
private Object[] elementArray;
private int size = 0;
public arrayStack(int capacity) {
this.elementArray = new Object[capacity];
} public void push(Object e) {
checkCapacity();
elementArray[size++] = e;
} public Object pop() {
if (size==0)
throw new EmptyStackException();
Object pop = elementArray[--size];
return pop;
} private void checkCapacity() {
if (elementArray.length == size) {
Object[] tempArray = elementArray;
elementArray = new Object[2 * elementArray.length + 1];
System.arraycopy(tempArray, 0, elementArray, 0, size);
}
}
}
private Object[] elementArray;
private int size = 0;
public arrayStack(int capacity) {
this.elementArray = new Object[capacity];
} public void push(Object e) {
checkCapacity();
elementArray[size++] = e;
} public Object pop() {
if (size==0)
throw new EmptyStackException();
Object pop = elementArray[--size];
return pop;
} private void checkCapacity() {
if (elementArray.length == size) {
Object[] tempArray = elementArray;
elementArray = new Object[2 * elementArray.length + 1];
System.arraycopy(tempArray, 0, elementArray, 0, size);
}
}
}
故pop()中:
Object pop = elementArray[--size];
应改为:
Object pop = elementArray[size];
elementArray[size]=null;
size--;
if (size==0)
throw new EmptyStackException();
Object pop = elementArray[--size];
elementArray[size]=null;
return pop;
}
除非=操作是拷贝复制,如果是引用的话不存在LS的问题
故pop()中:
Object pop = elementArray[--size];
应改为:
Object pop = elementArray[size];
elementArray[size]=null;
size--;
Object obj;
int len = size;
if (len == 0){
throw new EmptyStackException();
}
obj= elementArray[len-1];
removeElementAt(len - 1);//怎么写是你的事!
return obj;//返回弹出元素
}