Инфиксная префиксная нотация Булево выражение Java - PullRequest
0 голосов
/ 12 марта 2012

У меня есть код для преобразования логического выражения в его префиксную нотацию.Это еще не закончено.У меня возникла проблема при вводе выражения: отсутствуют переменные

В первой задаче я ввел это выражение: A-B*(C+D)/E, а на выходе получилось A*+(C).

Input Infix   : a*b-c/d+e
Output prefix : +-*ab/cde

Input Infix   : (a + b) * (c ^ d')
Output prefix : * + a b ^ c  d'

Пока мой код:

package logcgates;
import java.io.*;
import java.util.*;
import javax.swing.JOptionPane;

public class ConvertInfixToPrefix {
    /**
     * @param args the command line arguments
     */
    public static String[] operators = {"+","-","/","*","^"};
    public ConvertInfixToPrefix() {}
    public String convert(String infix) {
        StringBuffer sb = new StringBuffer(infix);
        int index = sb.length();
        String operand = "";
        int steps = 0;
        for (int i = 0; i < sb.length(); i++) {
            for (int x = 0; x < operators.length; x++) {
                int tempIndex = sb.indexOf(operators[x], i);
                if (tempIndex < index && tempIndex >= 0) {
                    index = tempIndex;
                    operand = operators[x];
                }
            }
            if (index == sb.length()) {
                break;
            }
            sb.delete(index, index + operand.length() + 1);
            for (int x = index - 1; x >= 0; x--) {
                if (sb.charAt(x) == '(' && steps == 0) {
                    sb.insert(x, operand);
                    break;
                } else if (sb.charAt(x) == '(') {
                    steps--;
                } else if (sb.charAt(x) == ')') {
                    steps++;
                }
            }
            i = index;
            index = sb.length();
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        // TODO code application logic here
        //String infix = "((A * ( B + C ))/ D)";
        String infix;
        infix=JOptionPane.showInputDialog(null,"Input expression: ");
        ConvertInfixToPrefix ConvertInfixToPrefix = new ConvertInfixToPrefix();
        System.out.println(ConvertInfixToPrefix.convert(infix));

    }
}
...