【问题标题】:Stack and Queue java [closed]堆栈和队列 java [关闭]
【发布时间】:2020-11-11 03:11:39
【问题描述】:

我必须创建一个遵循此说明的程序。创建由用户输入的四 (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]

【问题讨论】:

    标签: java linked-list stack queue


    【解决方案1】:

    您所做的是每次将整个 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);
    }
    

    您也可以使用 add() 代替off offer(返回布尔值),如果容器的容量已满,则抛出异常,但是您的程序非常简单,因此不可能发生这种情况

    【讨论】:

    • 我试过了,结果是空的。
    • 对不起我的错误我现在编辑了答案我写了“标题”而不是“标题”
    • 先生,我仍然有空的输出。我的 println 将是元素弹出后队列的内容,但我有一个空队列。
    • 更新了我的答案看看
    • 哦,我看到它应该在队列中弹出
    猜你喜欢
    • 2013-01-05
    • 2013-05-28
    • 2015-09-19
    • 2013-09-18
    • 2011-12-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 2013-09-30
    相关资源
    最近更新 更多