该方法的意思是将[3, 7, 1, 14, 9]存储到一个堆栈中,打印[3, 3, 7, 7, 1, 1, 14, 14, 9, 9],并使用单个队列作为辅助存储。 但我似乎无法在控制台中打印出堆栈。非常需要帮助,感谢
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
public class lab9_Part1 {
public static void main(String[] args) {
stutter();
}
public void stutter(Stack<Integer> s) {
Queue<Integer> q = new LinkedList<Integer>();
q.add(3);
q.add(7);
q.add(1);
q.add(14);
q.add(9);
while(!s.isEmpty())
q.add(s.pop());
while(!q.isEmpty())
s.push(q.remove());
while(!s.isEmpty())
q.add(s.pop());
while(!q.isEmpty()) {
int n = q.remove();
s.push(n);
s.push(n);
}
System.out.println(s);
}
}
该方法的意思是将[3, 7, 1, 14, 9]存储到一个堆栈中,打印[3, 3, 7, 7, 1, 1, 14, 14, 9, 9],并使用单个队列作为辅助存储。 但我似乎无法在控制台中打印出堆栈。非常需要帮助,感谢
您发布的代码的问题在于,在
stutter()
方法中调用时,您没有将任何参数传递给 main()
方法。这意味着您尝试在 Stack<Integer>
方法中修改的 stutter()
对象是空的,这就是为什么没有任何内容被打印到控制台的原因。
要解决此问题,您需要在
Stack<Integer>
方法中创建一个 main()
对象,并将其作为参数传递给 stutter()
方法。这样,stutter()
方法将能够修改您在 Stack<Integer>
方法中创建的 main()
对象,并且您将能够将其内容打印到控制台。
我还注意到
stutter()
方法不是静态的,因此您需要在 lab9_Part1
方法中创建 main()
类的对象并调用该对象的 stutter()
方法,或者使stutter()
方法静态,以便您可以直接从 main()
方法调用它。
这是应该工作的修改后的代码:
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
public class lab9_Part1 {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<Integer>();
stutter(stack);
System.out.println(stack);
}
public static void stutter(Stack<Integer> s) {
Queue<Integer> q = new LinkedList<Integer>();
q.add(3);
q.add(7);
q.add(1);
q.add(14);
q.add(9);
while(!s.isEmpty())
q.add(s.pop());
while(!q.isEmpty())
s.push(q.remove());
while(!s.isEmpty())
q.add(s.pop());
while(!q.isEmpty()) {
int n = q.remove();
s.push(n);
s.push(n);
}
}
}