在 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;
}

}

/**

出现的错误是 *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 你永远不会推送它所以它永远是空的。