堆栈和队列 java

Stack and Queue java

我必须按照此说明创建一个程序。创建一个 Java 堆栈,其中包含用户输入的四 (4) 个书名。一个一个弹出堆栈的元素;每个弹出的元素将被添加到队列中。然后,打印队列的内容。

这里是我提出的代码,但没有得到想要的输出。

import java.util.Scanner;
import java.util.Queue;
import java.util.Stack;
import java.util.LinkedList;


public class books {
    public static void main(String[] args) {
        Queue book = new LinkedList < String > ();
        Stack < String > Title = new Stack < > ();
        Scanner user = new Scanner(System.in);
        System.out.println("Enter four book titles.");
        int b = 4;
        for (int i = 1; i <= b; i++) {
            System.out.print("Book " + i + ":");
            String Enter = user.nextLine();
            Title.push(Enter);
            Title.pop();
            book.offer(Title);
        }
        System.out.println("New order of books:");
        System.out.println(book);
    }
}

输出是这样的

Enter four book titles.
Book 1:b1
Book 2:b2
Book 3:b3
Book 4:b4
New order of books:
[b1, b2, b3, b4]

你所做的是每次将整个 Title 堆栈放入队列,因为 pop 方法 returns 第一个要从堆栈​​中删除的元素

还有....

您必须首先将所有元素放入堆栈,然后再创建一个循环将它们添加到队列,因为这样您将第一个元素添加到堆栈也作为队列中的第一个元素

int b=4 之后,这应该是您的代码:

for(int i=1; i<=b;i++){
    System.out.print("Book " + i + ":");
    String Enter = user.nextLine();
    Title.push(Enter);
}
for(int i=1;i<=b;i++){
    book.offer(Title.pop);
}

而不是关闭报价(returns 布尔值)你也可以使用 add() 如果容器的容量已满则抛出异常,但是你这里的程序非常简单所以没有办法这样做发生