Я попытался решить проблемы с постфиксной нотацией, и при его реализации с помощью Stack конечный результат - это размер стека вместо значения результата включенных операций.
Я попытался отладить его и вижучто логика в порядке, но я не знаю, почему он возвращает размер стека? Где я ошибаюсь?. Я пробовал простые тестовые случаи, такие как "1 2 +", "2 5 *" и т. д.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class PostfixNotation {
public static void main(String []args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line = in.readLine();
String inputs[] = line.split(" ");
Stack<Integer> stek = new Stack<>();
for(String s : inputs){
if(s.equals("+") || s.equals("*") || s.equals("+") || s.equals("/")){
int n1 = stek.pop();
int n2 = stek.pop();
if(s.equals("+")){
n1 += n2;
stek.push(n1);
}
if(s.equals("+")){
n2 -= n1;
stek.push(n2);
}
if(s.equals("*")){
n1 *= n2;
stek.push(n1);
}
if(s.equals("+")){
n2 /= n1;
stek.push(n2);
}
}else{
stek.push(Integer.parseInt(s));
}
}
int n = stek.pop();
System.out.println(n);
}
}
Ожидаемый результат - 3.