Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class Ej_5 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Scanner reader = new Scanner(System.in);
- System.out.println("\nIngrese la expresión posfija: ");
- String expresionPosfija = reader.nextLine();
- try {
- System.out.println("Resultado: " + expresionPosfija + " = " + resuelvePosfija(expresionPosfija));
- }catch (Exception exception) {
- System.out.println("\nSe ha detectado el siguiente error: \n" + exception.getMessage());
- }
- }
- public static Integer resuelvePosfija(String expresionPosfija) {
- Pila<Integer> operandos = new Pila<>(50);
- Integer operador1;
- Integer operador2;
- Character simbolo;
- for (int i = 0; i < expresionPosfija.length(); ++i) {
- simbolo = expresionPosfija.charAt(i);
- if (Character.isDigit(simbolo)) {
- operandos.push(Integer.parseInt(simbolo.toString()));
- } else {
- if(operandos.size() < 2) {
- throw new RuntimeException("Error la expresión posfija esta mal escrita...");
- }
- operador2 = operandos.pop();
- operador1 = operandos.pop();
- operandos.push(calcular(operador1, operador2, simbolo));
- }
- }
- if (operandos.size() != 1) {
- throw new RuntimeException("Error la expresion posfija esta mal escrita...");
- }
- return operandos.pop();
- }
- private static Integer calcular(Integer operador1, Integer operador2, Character operator) {
- switch (operator) {
- case '+' :
- return operador1 + operador2;
- case '-' :
- return operador1 - operador2;
- case '*' :
- return operador1 * operador2;
- case '/' :
- // try {
- return operador1 / operador2;
- // }catch (Exception exception) {
- // System.out.println("\nERROR DIVISON POR CERO \n" + exception.getMessage());
- // }
- }
- return 0;
- }
- }
Add Comment
Please, Sign In to add comment