每次执行到s.push(item)这里就错了..刚开始学java并不是很懂..
package test;
import java.util.Scanner;
public 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];}
public static void main(String[] args)
{
FixedCapacityStackOfStrings s;
s = new FixedCapacityStackOfStrings(100);
Scanner scan =new Scanner(System.in);
System.out.println("请输出");
while(scan.hasNext())
{
String item = scan.next();
if(!item.equals("-"))
s.push(item);
else if(!s.isEmpty()) System.out.println(s.pop()+" ");
}
System.out.println("结束");
scan.close();
System.out.println("("+s.size()+" left on stack)");
}
}
private int N = 0;
感觉这段代码是不能编译通过的吧?而且while循环没有中止条件(估计是直接ctrl+c退出吧?)
This method may block while waiting for input to scan.
它在等待你输入啊,没有输入就会阻塞等待。如果想结束输入,windows环境下输入crtl+d
就会终止输入,跳出while循环。