Когда я пытаюсь запустить свои выражения postfix, я получаю исключение EmptyStackException из-за того, что моя строка имеет два операнда вплотную.Я не могу понять, как захватить это в моем стеке.Любые мысли или идеи приветствуются.
import java.util.Stack;
import java.util.Queue;
public class postFixCalc extends Program2Test{
static Program2Test<Integer> calcStack = new Program2Test<>();
private static int calc1(String exp) {
Stack<Integer> calc1Stack = new Stack<>();
for(int i = 0; i<exp.length(); i++) {
char c = exp.charAt(i);
if(Character.isDigit(c))
calc1Stack.push(c-'0');
else {
int val1= calc1Stack.pop();
int val2= calc1Stack.pop();
switch(c){
case '+':
calc1Stack.push(val2+val1);
break;
case '-':
calc1Stack.push(val2-val1);
break;
case '/':
calc1Stack.push(val2/val1);
break;
case '*':
calc1Stack.push(val2*val1);
break;
}
}
}
return calc1Stack.pop();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String exp = "12+4*5-";
System.out.println("Your Answer is: " + calc1(exp));
String exp2 = "(12*4*1-)/53+";
System.out.println("Your answer is: " + calc1(exp2));
}
}