Целочисленный тип стека возвращает размер вместо значения - PullRequest
0 голосов
/ 06 июня 2019

Я попытался решить проблемы с постфиксной нотацией, и при его реализации с помощью 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.

...