这段实现栈的java代码执行错误..

每次执行到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)");
    }
}
阅读 2.2k
2 个回答

private int N = 0;
感觉这段代码是不能编译通过的吧?而且while循环没有中止条件(估计是直接ctrl+c退出吧?)

This method may block while waiting for input to scan.

它在等待你输入啊,没有输入就会阻塞等待。如果想结束输入,windows环境下输入crtl+d就会终止输入,跳出while循环。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题