Привет, каждый, кто нуждается в помощи, чтобы ответить на вопрос в java stack
Это мой вопрос: завершите описанный ниже метод, который оценивает строку, представляющую арифметическое c выражение в обратном Poli sh ( постфикс) нотация. Строка содержит выражение, состоящее из чисел от 0 до 9 и операторов «+», «-», «*» и «/».
Например, это несколько возможных строк ввода и соответствующие результаты:
Ввод: Вывод: "12+" 3
"43 *" 12
"123 + "5
" 123 + "7
" 12 + 3 * "9
Чтобы помочь вам решить эту проблему, вы можете использовать стандартный класс Stack, который реализует стек целых чисел:
Stack<Integer> stk = new Stack<>(); // create a stack
stk.push(5); // push an integer onto the top of the stack
int n = stk.pop(); // pop an integer from the top of the stack
if ( stk.empty() ) ... // test if the stack is empty
Я начал отвечать, это мой код:
Stack<Integer> stk = new Stack<>();
int res=0;
for (int i = 0; i < expression.length(); i++) {
char ch = expression.charAt(i);
if (Character.isDigit(ch)) {
stk.push(ch - '0');
}
else {
if(stk.isEmpty())
{
return 0;
}
if (ch == '-') {
res = stk.pop() - stk.pop();
res=res*-1;
}
if (ch == '*') {
res = stk.pop() * stk.pop();
}
if (ch == '+') {
res = stk.pop() + stk.pop();
}
if (ch == '/') {
res = stk.pop() / stk.pop();
}
}
}
return res;
Это ошибка, которую я получил, я не понимаю, что не так в этом коде.
ошибка:
An exception of type java.util.EmptyStackException was reported when executing this line:
res = stk.pop() * stk.pop();
Exception in thread "main" java.util.EmptyStackException
at java.util.Stack.peek(Stack.java:102)
at java.util.Stack.pop(Stack.java:84)
at Main.evaluate(Main.java:28)
at Main.exitTest(Main.java:78)
at Main.main(Main.java:104)
мне нужна ваша помощь, спасибо всем.