Итак, у меня есть задание написать инфикс для метода postfix без вложенных циклов (циклов в циклах), и я этого не заметил, и я написал длинный метод с вложенными циклами, есть идеи, как это исправить? Вот код Как я могу разделить их на меньший метод, пока есть стек?
List<String> infix2Postfix(List<String> infix) {
Stack<String> opStack = new Stack<>();
List<String> outPut = new ArrayList<>();
for (String inComing : infix) {
// When incoming is one of -,+,*,/,^
if (OPERATORS.contains(inComing)) {
if (opStack.empty() || opStack.peek().equals("(")) {
....
} else {
....
if (inComingP == 4 && inComingP == operatorP) {
....
} else if (inComingP == operatorP) {
...
} else if (inComingP < operatorP) {
while (!opStack.empty() && !opStack.peek().equals("(")) {
...
}
opStack.push(inComing);
} else {
opStack.push(inComing);
}
}
}
// when incoming is one of "(" , ")"
else if ("()".contains(inComing)) {
if (")".equals(inComing)) {
while (opStack.size() != 0 && !opStack.peek().equals("(")) {
...
}
if (opStack.size() == 0) {
...
} else {
opStack.pop();
}
} else {
opStack.add(inComing);
}
} else {
outPut.add(inComing);
}
}
if (opStack.contains("(")) {
throw new IllegalArgumentException(MISSING_OPERATOR);
}
while (!opStack.empty()) {
outPut.add(opStack.pop());
}
return outPut;
}