java中的堆栈工作不正常?
我正在尝试将数据存储到堆栈中。请更正我的错误,堆栈是后进先出类型。所以,我们期望我的程序的输出会有点相反。但遗憾的是,产出有所不同。我不确定代码的哪一部分是错误的 请帮助:| 代码: ` 公共类损坏队列 { } }` 输入: 常规阵容 常规阵容 常规阵容 莎拉贵宾阵容 玛丽贵宾队 列队琼贵宾 Bea贵宾阵容 常规汉克 艺术常规阵容 戴西贵宾阵容 马吕斯常规阵容 丹麦贵宾阵容 输出: 现在是约翰的常客 现在给鲍勃提供一份普通的 现在为汤姆提供一个固定的服务 现在为莎拉提供VIP服务 现在为玛丽提供贵宾服务 现在为琼提供VIP服务 现在为Bea提供VIP服务 现在为汉克提供一个普通的 现在为艺术服务 现在为黛西提供VIP服务 现在给马吕斯一个普通的 现在为Dane提供VIP服务 完成java中的堆栈工作不正常?,java,stack,Java,Stack,我正在尝试将数据存储到堆栈中。请更正我的错误,堆栈是后进先出类型。所以,我们期望我的程序的输出会有点相反。但遗憾的是,产出有所不同。我不确定代码的哪一部分是错误的 请帮助:| 代码: ` 公共类损坏队列 { } }` 输入: 常规阵容 常规阵容 常规阵容 莎拉贵宾阵容 玛丽贵宾队 列队琼贵宾 Bea贵宾阵容 常规汉克 艺术常规阵容 戴西贵宾阵容 马吕斯常规阵容 丹麦贵宾阵容 输出: 现在是约翰的常客 现在给鲍勃提供一份普通的 现在为汤姆提供一个固定的服务 现在为莎拉提供VIP服务 现在为玛丽提供
嗯。因此,您的意思是,将一个名称推到堆栈上。然后立即从堆栈中弹出该名称。所以,是的,它是后进先出,但你的堆栈上只有一个元素。尝试将pop操作完全移出while循环。然后进行另一个while循环,不断弹出元素,直到堆栈为空。您的堆栈操作似乎就在这里
nameStack.push(name);
statusStack.push(status);
System.out.println("Now serving "+ nameStack.pop() + " a " + statusStack.pop());
现在,如果在开始弹出任何内容之前将名称全部按下,那么堆栈将反转名称,但同时一次按下并弹出一个项目
因此,本质上,您可以将name
和status
推到堆栈上,但在执行其他操作之前,您只需将其弹出并打印到控制台即可
你的堆栈实际上什么都没做
如果你真的想反转你的输出,采取
System.out.println("Now serving "+ nameStack.pop() + " a " + statusStack.pop());
退出初始循环,然后将其放入新循环。您的代码有以下部分:
nameStack.push(name);
statusStack.push(status);
System.out.println("Now serving "+ nameStack.pop() + " a " + statusStack.pop());
当您将一个值推送到堆栈上时,您会再次直接将其弹出!你应该把它们都推上,然后在它们全部打开后把它们弹出
为了确保您理解它们,在堆栈上多放一点可能是值得的:)您的输入是否按照您输入的顺序进行?(你推了约翰,然后是鲍勃.)。。或者这就是堆栈的样子?TBH,我不认为OP的问题在于理解堆栈,而是理解基本的一步一步的程序流程。我想我们都会时不时地犯愚蠢的错误。如果OP是在堆栈之类的数据结构上,我想他们对程序流有相当好的把握。不管怎样,问题都得到了回答
System.out.println("Now serving "+ nameStack.pop() + " a " + statusStack.pop());
nameStack.push(name);
statusStack.push(status);
System.out.println("Now serving "+ nameStack.pop() + " a " + statusStack.pop());