0
MyStack()
{
    Vector<Integer> v=new Vector<Integer>(10,2);
}

void push(int n)
{
    v.addElement(n);
}

void pop()
{
    if(v.isEmpty())
        System.out.println("Stack underflow!");
    else
        System.out.println(v.elementAt(0));
}

void display()
{
    for(int i=0;i<v.size();i++)
        System.out.print(v.elementAt(i) +" ");
}

}

class StackDemo
{
    public static void main(String args[])
    {
        Scanner in=new Scanner(System.in);
        MyStack s=new MyStack();
        int option=0;
        do
        {
            System.out.println("1: Push\n2:Pop\n3:Display\n4:Quit");
            System.out.println("Enter your option: ");
            option=in.nextInt();
            switch(option)
            {
                case 1:
                {
                System.out.println("Enter an integer:");
                int n=in.nextInt();
                s.push(n);break;
                }

                case 2:s.pop();break;

                case 3:s.display();break;

            }

        }

    while(option!=4);

    }

}

// 抛出错误:未找到变量 v。任何帮助将不胜感激。谢谢。

4

1 回答 1

2

看起来v是在您的构造函数中本地创建的,而不是作为您的类的成员。

尝试定义v为类成员,然后在构造函数中简单地分配它。

class MyStack {
    Vector<Integer> v;

    public MyStack() {
        v = new Vector<Integer>(10,2);
    }
}

或者在定义它时分配它:

class MyStack {
    Vector<Integer> v = new Vector<Integer>(10,2);
}

查看关于类成员的 Java 教程。

于 2012-09-04T19:48:12.347 回答