java中的堆栈工作不正常?

java中的堆栈工作不正常?,java,stack,Java,Stack,我正在尝试将数据存储到堆栈中。请更正我的错误,堆栈是后进先出类型。所以,我们期望我的程序的输出会有点相反。但遗憾的是,产出有所不同。我不确定代码的哪一部分是错误的 请帮助:| 代码: ` 公共类损坏队列 { } }` 输入: 常规阵容 常规阵容 常规阵容 莎拉贵宾阵容 玛丽贵宾队 列队琼贵宾 Bea贵宾阵容 常规汉克 艺术常规阵容 戴西贵宾阵容 马吕斯常规阵容 丹麦贵宾阵容 输出: 现在是约翰的常客 现在给鲍勃提供一份普通的 现在为汤姆提供一个固定的服务 现在为莎拉提供VIP服务 现在为玛丽提供

我正在尝试将数据存储到堆栈中。请更正我的错误,堆栈是后进先出类型。所以,我们期望我的程序的输出会有点相反。但遗憾的是,产出有所不同。我不确定代码的哪一部分是错误的

请帮助:|

代码:

`

公共类损坏队列 {

} }`

输入:

常规阵容

常规阵容

常规阵容

莎拉贵宾阵容

玛丽贵宾队

列队琼贵宾

Bea贵宾阵容

常规汉克

艺术常规阵容

戴西贵宾阵容

马吕斯常规阵容

丹麦贵宾阵容

输出:

现在是约翰的常客

现在给鲍勃提供一份普通的

现在为汤姆提供一个固定的服务

现在为莎拉提供VIP服务

现在为玛丽提供贵宾服务

现在为琼提供VIP服务

现在为Bea提供VIP服务

现在为汉克提供一个普通的

现在为艺术服务

现在为黛西提供VIP服务

现在给马吕斯一个普通的

现在为Dane提供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());