RafaelFascio

TP2 Ejercicio 5-Equipo 5.3

Oct 1st, 2020 (edited)
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.79 KB | None | 0 0
  1. import java.util.Scanner;
  2. public class Ej_5 {
  3.  
  4.     public static void main(String[] args) {
  5.         // TODO Auto-generated method stub
  6.        
  7.         Scanner reader = new Scanner(System.in);
  8.         System.out.println("\nIngrese la expresión posfija: ");
  9.         String expresionPosfija = reader.nextLine();
  10.        
  11.         try {
  12.         System.out.println("Resultado: " + expresionPosfija + " = " + resuelvePosfija(expresionPosfija));
  13.        
  14.     }catch (Exception exception) {
  15.         System.out.println("\nSe ha detectado el siguiente error: \n" + exception.getMessage());
  16.     }
  17.     }
  18.    
  19.    
  20.     public static Integer resuelvePosfija(String expresionPosfija) {
  21.        
  22.         Pila<Integer> operandos = new Pila<>(50);
  23.         Integer operador1;
  24.         Integer operador2;
  25.         Character simbolo;
  26.        
  27.         for (int i = 0; i < expresionPosfija.length(); ++i) {
  28.             simbolo = expresionPosfija.charAt(i);
  29.             if (Character.isDigit(simbolo)) {
  30.                 operandos.push(Integer.parseInt(simbolo.toString()));
  31.             } else {
  32.                 if(operandos.size() < 2) {
  33.                     throw new RuntimeException("Error la expresión posfija esta mal escrita...");
  34.                 }
  35.                 operador2 = operandos.pop();
  36.                 operador1 = operandos.pop();
  37.                 operandos.push(calcular(operador1, operador2, simbolo));
  38.             }
  39.         }
  40.         if (operandos.size() != 1) {
  41.             throw new RuntimeException("Error la expresion posfija esta mal escrita...");
  42.         }
  43.         return operandos.pop();
  44.     }
  45.    
  46.     private static Integer calcular(Integer operador1, Integer operador2, Character operator) {
  47.         switch (operator) {
  48.         case '+' :
  49.             return operador1 + operador2;
  50.         case '-' :
  51.             return operador1 - operador2;
  52.         case '*' :
  53.             return operador1 * operador2;
  54.         case '/' :
  55. //          try {
  56.             return operador1 / operador2;
  57. //          }catch (Exception exception) {
  58. //              System.out.println("\nERROR DIVISON POR CERO \n" + exception.getMessage());
  59. //          }
  60.         }
  61.         return 0;
  62.     }
  63.    
  64.  
  65. }
  66.  
Add Comment
Please, Sign In to add comment