堆栈和队列java



我必须按照以下说明创建一个程序。创建一个由用户输入的四(4(本书名组成的Java堆栈。逐个弹出堆栈的元素;每个弹出的元素都将被添加到一个队列中。然后,打印队列的内容。

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

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方法返回要从堆栈中删除的第一个元素

此外。。。。

您必须首先将所有元素放在堆栈中,然后再创建一个循环将它们添加到队列中,因为通过这种方式,您将第一个元素添加到堆栈中,同时也是队列中的第一个元素

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

相反,offer(返回booolean(也可以使用add((,如果容器的容量满了,它会抛出异常,但这里的程序非常简单,所以不可能发生这种情况

最新更新