Итак, я сделал метод, используя для этого стеки и списки, но мне нужно сделать это, используя рекурсивный метод для круглых скобок, который переписывает содержимое внутри них в постфикс и возвращает проанализированное выражение, переписывая содержимое в исходное выражение:
(5 + (3 * 2)+2)-1 original expression
(5 + (3 * 2)+2) first pair of parentheses
(3 * 2) second pair of parentheses
32* parsed expression to postfix
(5 + 32*+2) first pair of parentheses with replaced content
532*+2+ original expression parsed
Я подумал, можно ли мне отправить оригинальное выражение в список и использовать индексы, чтобы взять содержимое скобок, чтобы переписать их, но я понятия не имею, как заменить старый контент напроанализированный:
public static void Parse(String infijo) {
IterableQueueListas<String> entranceList = new IterableQueueListas<>();
IterableQueueListas<String> exitList = new IterableQueueListas<>();
IterableStacksListas<String> stack = new IterableStacksListas<>();
String infix="";
String separate[] = infix.split("(?<=[-+*/%()])|(?=[-+*/%()])");
System.out.println(Arrays.toString(separada));
ArrayList<String> separateArray = new ArrayList<String>(Arrays.asList(separate));
if (separateArray.contains("(")) {
int fristposition = separateArray.indexOf("(");
int finalposition = separateArray.lastIndexOf(")");
int f = finalposition;
int z = fristposition + 1;
List<String> recursiv = separateArray.subList(z, f);
StringBuilder sb = new StringBuilder();
for (String s : recursiv) {
sb.append(s);
}
String subExpression = sb.toString();
System.out.println(subExpression);
separateArray.remove(f);
separateArray.remove(z - 1);
Parse(subExpression);
По сути, я хочу заменить проанализированное выражение в круглых скобках для старого выражения, используя ArrayList.
Если у кого-то есть предложения или идеи, я действительноценить это.