Stack 根本不会打印

问题描述 投票:0回答:1

该方法的意思是将[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],并使用单个队列作为辅助存储。 但我似乎无法在控制台中打印出堆栈。非常需要帮助,感谢

java queue stack
1个回答
0
投票

您发布的代码的问题在于,在

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

© www.soinside.com 2019 - 2024. All rights reserved.