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

这段实现栈的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)");
    }
}

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


This method may block while waiting for input to scan.

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

【热门文章】
【热门文章】