将堆栈传递给函数

Passing Stack to a function

我正在尝试解决关于 hackerrank.But 的问题 我一直收到 emptyStack 异常 每次 time.I 认为这可能是因为我正在将堆栈传递给getMax 函数,它正在改变原始堆栈。
我试着在 getMax 中写这个,希望它不会影响最终的堆栈,但它没有用。

Stack<Integer> s=st;

你能指出并解释我犯的错误吗?

But I keep getting emptyStack exception every time.

因为当你执行stack.pop的时候,栈已经是空的了

在你的getMax方法中,Stack<Integer> s=st这个操作并没有复制栈,也就是说sts指的是同一个对象,所以你后面的操作会影响原来的堆栈。

Stack<Integer> s=st; 更改为 Stack<Integer> s= (Stack<Integer>) st.clone();