无法让我的堆栈程序使用pop

时间:2016-11-21 19:52:52

标签: java string stack java.util.scanner pop

所以我试图在我的程序中使用pop()并且我还没有完全理解为什么它不会运行。是因为我使用的是扫描仪吗?有人可以解释为什么我的代码告诉我反向堆栈中的pop()不能应用于(java.util.Stack)pop(堆栈); ^继承人代码

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());
        }
    }
}

谢谢你

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

如上所述,您的主要问题的答案是您需要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());
        }
    }
}