所以我试图在我的程序中使用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());
}
}
}
谢谢你
答案 0 :(得分:2)
您在pop
中定义的reverseStack
并未接受任何参数。这就是为什么你不能将stack
作为论据传递的原因。
答案 1 :(得分:1)
我发现了多个问题。您无法在pop
中调用非静态方法main
。
您可能需要将全局变量中的Stack<String> stack;
更新为static Stack<String> stack;
并在main中初始化,然后调用pop
方法,该方法现在应声明为static
。
或者您可以将参数传递给stack
到pop
方法,并将其声明为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());
}
}
}