在 java leetcode 中收到一个错误提示堆栈为空
Receiving a error saying that stack is empty in java leetcode
相同的代码在这里
class 我的队列 {
Stack<Integer> mainS;
Stack<Integer> helperS;
// Stack<Integer> mainS =new Stack<>();
// Stack<Integer> helperS =new Stack<>();
public MyQueue() {
mainS =new Stack<>();
helperS =new Stack<>();
}
public void push(int x) {
if(mainS.size()>0){
mainS.push(x);
}
}
public int pop() {
while(mainS.size() >1){
helperS.push((mainS.pop()));
}
int val = mainS.pop();
mainS.add(helperS.pop());
return val;
}
public int peek() {
while(mainS.size() >1){
helperS.push((mainS.pop()));
}
int val1 = mainS.pop();
helperS.push(val1);
mainS.add(helperS.pop());
return val1;
}
public boolean empty() {
if(mainS.size()==0) return true;
return false;
}
}
/**
- 您的 MyQueue 对象将被实例化并这样调用:
- MyQueue obj = new MyQueue();
- obj.push(x);
- int param_2 = obj.pop();
- int param_3 = obj.peek();
- 布尔值param_4 = obj.empty();
*/
出现的错误是
*java.util.EmptyStackException
在第 102 行,java.base/java.util.Stack.peek
第 84 行,java.base/java.util.Stack.pop
在第 35 行,MyQueue.peek
在第 69 行,Driver.helperSelectMethod
在第 89 行,Driver.helper
在第 110 行,Driver.main*
逻辑正确
请帮助某人。
替换下面的代码
public void push(int x) {
if(mainS.size()>0){
mainS.push(x);
}
}
和
public void push(int x) {
mainS.push(x);
}
您正在检查堆栈的大小应该大于 0,然后再压入。但是当你创建它时它会是 0,如果它是 0 你永远不会推送它所以它永远是空的。
相同的代码在这里
class 我的队列 {
Stack<Integer> mainS;
Stack<Integer> helperS;
// Stack<Integer> mainS =new Stack<>();
// Stack<Integer> helperS =new Stack<>();
public MyQueue() {
mainS =new Stack<>();
helperS =new Stack<>();
}
public void push(int x) {
if(mainS.size()>0){
mainS.push(x);
}
}
public int pop() {
while(mainS.size() >1){
helperS.push((mainS.pop()));
}
int val = mainS.pop();
mainS.add(helperS.pop());
return val;
}
public int peek() {
while(mainS.size() >1){
helperS.push((mainS.pop()));
}
int val1 = mainS.pop();
helperS.push(val1);
mainS.add(helperS.pop());
return val1;
}
public boolean empty() {
if(mainS.size()==0) return true;
return false;
}
}
/**
- 您的 MyQueue 对象将被实例化并这样调用:
- MyQueue obj = new MyQueue();
- obj.push(x);
- int param_2 = obj.pop();
- int param_3 = obj.peek();
- 布尔值param_4 = obj.empty(); */
出现的错误是 *java.util.EmptyStackException
在第 102 行,java.base/java.util.Stack.peek
第 84 行,java.base/java.util.Stack.pop
在第 35 行,MyQueue.peek
在第 69 行,Driver.helperSelectMethod
在第 89 行,Driver.helper
在第 110 行,Driver.main*
逻辑正确 请帮助某人。
替换下面的代码
public void push(int x) {
if(mainS.size()>0){
mainS.push(x);
}
}
和
public void push(int x) {
mainS.push(x);
}
您正在检查堆栈的大小应该大于 0,然后再压入。但是当你创建它时它会是 0,如果它是 0 你永远不会推送它所以它永远是空的。