猿问

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

    }

}


江户川乱折腾
浏览 548回答 2
2回答

收到一只叮咚

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

桃花长相依

This method may block while waiting for input to scan.它在等待你输入啊,没有输入就会阻塞等待。如果想结束输入,windows环境下输入crtl+d就会终止输入,跳出while循环。
随时随地看视频慕课网APP

相关分类

Java
我要回答