Advertisement
jtentor

Ejercicio 8 - Trabajo práctico 2 - 2017

Sep 15th, 2017 (edited)
326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.30 KB | None | 0 0
  1. import java.util.Stack;
  2. import java.util.Scanner;
  3.  
  4. public class TP2E08 {
  5.  
  6.     public static void main(String[] args) {
  7.         TP2E08 exercise = new TP2E08();
  8.         exercise.execute();
  9.     }
  10.  
  11.     private void execute() {
  12.         Scanner console = new Scanner(System.in);
  13.         System.out.print("Ingrese una expresión interfija: ");
  14.         String interFixExpression = console.nextLine();
  15.         System.out.println("Expresión posfija: " + toPostFix(interFixExpression));
  16.         console.close();
  17.     }
  18.    
  19.     private String toPostFix(String interFixExpression) {
  20.         String postFixExpression = "";
  21.        
  22.         Stack<Character> operators = new Stack<Character>();
  23.        
  24.         Character c;
  25.         for (int i = 0; i < interFixExpression.length(); ++i) {
  26.  
  27.             c = interFixExpression.charAt(i);
  28.             if ((c >= '0') && (c <= '9')) {
  29.                 postFixExpression += c;
  30.             } else {
  31.                 while ((operators.size() > 0) && (precedence(operators.peek()) >= precedence(c))) {
  32.                     postFixExpression += operators.pop();
  33.                 }
  34.                 operators.push(c);
  35.             }
  36.         }
  37.  
  38.         while (operators.size() > 0) {
  39.             postFixExpression += operators.pop();
  40.         }
  41.  
  42.         return postFixExpression;
  43.     }
  44.  
  45.     private int precedence(Character operator) {
  46.         switch(operator) {
  47.         case '+' :
  48.             return 1;
  49.         case '-' :
  50.             return 1;
  51.         case '*' :
  52.             return 2;
  53.         case '/' :
  54.             return 2;
  55.         default :
  56.             return 3;
  57.         }
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement