Java Android计算器EmptyStackException

Java Android计算器EmptyStackException,java,android,user-interface,exception,stack,Java,Android,User Interface,Exception,Stack,我想做一个堆栈计算器应用程序。但当我输入3 4+时,我的应用程序崩溃并抛出EmptyStackException public class Calculator { // RechenLogik private Stack<Double> stack = new Stack<Double>(); private MainActivity activity ; public Calculator(MainActivity activity ) { this.

我想做一个堆栈计算器应用程序。但当我输入3 4+时,我的应用程序崩溃并抛出EmptyStackException

public class Calculator { // RechenLogik

 private Stack<Double> stack = new Stack<Double>();
 private MainActivity activity ;

public Calculator(MainActivity activity ) {
    this.activity = activity;
}


public void calculate() {
    String expr =activity.getTextfromTextField();

        switch (expr) {
            case "+":
                stack.push(stack.pop() + stack.pop());
                activity.setTextField(stack.peek().toString()); // set Text
                break;
            default:
                stack.push(Double.parseDouble(expr));
                break;
               }
           }
        }
     And in Main Activity in OnClick Method 
 case R.id.button17: r.calculate(); TextField.setText(""); break; // Enter 
  press
公共类计算器{//RechenLogik
私有堆栈=新堆栈();
私人活动;
公共计算器(主要活动){
这个。活动=活动;
}
公共空间计算(){
String expr=activity.getTextfromTextField();
交换机(expr){
格“+”:
stack.push(stack.pop()+stack.pop());
activity.setTextField(stack.peek().toString());//设置文本
打破
违约:
stack.push(Double.parseDouble(expr));
打破
}
}
}
在OnClick方法的主要活动中
案例R.id按钮17:R.calculate();TextField.setText(“”);中断;//进入
按

如果有任何帮助,我们将不胜感激。

没人有主意吗?堆栈一定有问题,但我找不到。好的,谢谢,我发现了错误。