public class Test2 {
public static void main(String args[])
{
FixedCapacityStackOfStrings s;
s=new FixedCapacityStackOfStrings(100);
while(!StdIn.isEmpty())
{
String item=StdIn.readString();
if(!item.equals("-"))
s.push(item);
else if(!s.isEmpty())
System.out.println(s.pop()+" ");
}
--------------------------------------------------------------
class FixedCapacityStackOfStrings {
private String[] a;
private int N;
public FixedCapacityStackOfStrings(int cap)
{
a=new String[cap];
}
public boolean isEmpty(){
return N==0;
}
public int size()
{
return N;
}
public void push(String item)
{
a[N++]=item;
}
public String pop()
{
return a[--N];
}
private void resize(int max)
{//将大小为N<=max的栈移动到一个新的大小为max的数组中
Item[] temp=(Item[]) new Object [max];
for(int i=0;i<N;i++)
temp[i]=a[i];
a=temp;
//这里为什么第一个要用到for来实现而下面可以直接a=temp?
temp数组比a大不是可以直接temp=a吗?
而且a比temp小为什么可以a=temp?不会出现越界的异常吗