【问题标题】:Can't get my stack program to use pop [closed]无法让我的堆栈程序使用 pop [关闭]
【发布时间】:2016-11-21 19:52:52
【问题描述】:

所以我试图在我的程序中使用 pop(),但我并不完全理解它为什么不能运行。是因为我用的是扫描仪吗?有人可以解释为什么我的代码告诉我 reverseStack 中的 pop() 不能应用于 (java.util.Stack) pop(stack); ^ 这是代码

import java.util.*;
public class reverseStack{

    Scanner scan;
    Stack <String>stack;
    public static void main(String [] args)
    {
        Scanner scan = new Scanner (System.in);
        System.out.println("Type something: ");
        Stack<String> stack = new Stack<String>();
        scan = new Scanner(scan.nextLine());
        while (scan.hasNext()){
            stack.push(scan.next());
        }
        System.out.println(stack);
        printStack(stack);  
        pop(stack);
    }


    private static void printStack(Stack<String>s){
        if(s.isEmpty())
            {
            System.out.println("true");
        }
        else {
        System.out.println("false");
             }
    }
    void pop(){
        while(!stack.empty()){
            System.out.println(stack.pop());
        }
    }
}

谢谢大佬

【问题讨论】:

    标签: java string stack java.util.scanner


    【解决方案1】:

    您在reverseStack 中定义的pop 不接受任何参数。这就是为什么你不能将它 stack 作为参数传递。

    【讨论】:

      【解决方案2】:

      我发现了多个问题。您不能在main 中调用非静态方法pop

      您可能需要将全局变量中的Stack&lt;String&gt; stack; 更新为static Stack&lt;String&gt; stack; 并在main 中对其进行初始化,然后调用pop 方法,该方法现在应声明为static

      或者您可以将参数传递给stackpop 方法并声明它static

      【讨论】:

        【解决方案3】:

        如上所述,您的主要问题的答案是您需要 pop() 方法的参数。附件应该可以工作。

        import java.util.Scanner;
        import java.util.Stack;
        
        public class ReverseStack2 {
        
            public static void main(String [] args) {
                Stack stack = new Stack();
                Scanner scan = new Scanner (System.in);
        
                System.out.println("Type something: ");
                scan = new Scanner(scan.nextLine());
                while (scan.hasNext()){
                    stack.push(scan.next());
                }
                System.out.println(stack);
                printStack(stack);  
                pop(stack);
            }
            private static void printStack(Stack s){
                if(s.isEmpty()) {
                    System.out.println("true");
                } else {
                    System.out.println("false");
                }
            }
            private static void pop(Stack s){
                while(!s.empty()){
                    System.out.println(s.pop());
                }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-04-07
          • 2016-08-16
          • 1970-01-01
          • 2020-06-29
          • 2019-12-13
          • 2013-04-20
          • 2015-12-01
          • 2012-12-14
          相关资源
          最近更新 更多