首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Java实现堆栈

无法使用Java实现堆栈
EN

Stack Overflow用户
提问于 2020-07-03 12:48:38
回答 1查看 49关注 0票数 0

我无法理解为什么我的值没有存储在堆栈中。

UseStack.java

代码语言:javascript
复制
package test;
import java.util.Scanner;

class UseStack{
    private static Scanner obj;
    public static void main(String[] args) {
        obj = new Scanner(System.in);
        System.out.println("Enter the size of Stack....");
        int n = obj.nextInt();
        Stack stack = new Stack(n);
        while(true){
            System.out.println("1: Push");
            System.out.println("2: Pop");
            System.out.println("3: Show");
            int choice = obj.nextInt();;
            switch(choice){
                case 1:
                Push push = new Push(n);
                push.push();
                break;
                case 2:
                Pop pop = new Pop(n);
                pop.pop();
                break;
                case 3:
                Push push1 = new Push(n);
                push1.show();
                break;
                default:
                System.out.println("Invalid Option");
                break;
            }
        }
    }
}

Stack.java

代码语言:javascript
复制
package test;

    class Stack {
        public int arr[];
        public  int top;
        public  int capacity;
    
        public Stack(int size){
            this.arr = new int[size];
            capacity = size;
            top = -1;
        }
    }

Push.java

代码语言:javascript
复制
    package test;
    import java.util.Scanner;
    
    class Push extends Stack {
        public Push(int size) {
            super(size);
        }
    
        private static Scanner obj;
        public void push(){
obj = new Scanner(System.in);
            System.out.println("Enter Value to push...");
            int value = obj.nextInt();
            if(top==capacity-1){
                System.out.println("StackOverflow");
                return;
            }
            else{
                top++;
                arr[top]=value;
                System.out.println("Pushed...");
            }
        }



    public void show(){
        if(top==-1){
            System.out.println("StackUnderFlow");
            return;
        }
        else{
            System.out.println("Stack Elements : ");
            for(int i=top;i>=0;i--){
                System.out.println(arr[i]+" ");
            }
        }       
    }
}

Pop.java

代码语言:javascript
复制
package test;

class Pop extends Push{
    public Pop(int size) {
        super(size);
    }

    public void pop(){
        if(top==-1){
            System.out.println("StackUnderflow");
            return;
        }
        else{
            System.out.println("Poped.. "+arr[top]);
            top--;
        }
    }
}

请原谅我对发布整个代码的无知,在这个主题上已经问了几个问题,但是我应该做些什么来克服这个错误……

误差

当我在数组中推送两个值,然后试图显示元素时,我得到了堆栈流.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-03 12:56:03

在Push.java中,您需要初始化obj扫描程序,例如

代码语言:javascript
复制
public void push(){
    obj = new Scanner(System.in);
    ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62715793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档