У меня есть код для преобразования логического выражения в его префиксную нотацию.Это еще не закончено.У меня возникла проблема при вводе выражения: отсутствуют переменные
В первой задаче я ввел это выражение: 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));
}
}