Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- public class RPNSupport implements RPNInterface {
- public void getString(String str, ArrayList<Double> stack){
- makeCalculation(str, stack);
- }
- private void makeCalculation (String str, ArrayList<Double> stack){
- if (str.equals("+")|str.equals("-")|str.equals("*")|str.equals("/")){
- // Берем последние 2 строки из стека
- Double op1 = stack.get(stack.size()- 1);
- stack.remove(stack.size()- 1);
- // И если стек состоял только из одной строки, то
- // обрабатываем исключение
- try{
- Double op2 = stack.get(stack.size()- 1);
- stack.remove(stack.size()- 1);
- //Преобразуем оператор из string и вычисляем выражение
- double sum = 0;
- //*** Заменил switch на 4 if(ругалась IDE)
- if (str.equals("+")){
- sum = op2 + op1;
- }else if (str.equals("-")){
- sum = op2 - op1;
- }else if (str.equals("*")){
- sum = op2 * op1;
- }else if (str.equals("/")){
- sum = op2 / op1;
- }
- //Результат заносим в стек
- stack.add(sum);
- printStack(stack);
- } catch (ArrayIndexOutOfBoundsException e){
- System.err.println("Для выполнения операции недостаточно"
- + " операндов в стеке!");
- stack.add(op1);
- }
- }
- else{
- //Иначе добавляем число в стек
- stack.add(Double.parseDouble(str));
- printStack(stack);
- }
- }
- //Выделение метода
- private void printStack(ArrayList<Double> stack) {
- System.out.print("В стеке находятся числа ");
- for (int i = stack.size(); i > 0; i--){
- System.out.print(stack.get(stack.size() - i) + " ");
- }
- System.out.println();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment