Я хочу преобразовать инфикс в постфикс со структурой данных стека.
В этом коде я не рассматривал случаи * и /.
пример ввода: 10 - ( 3 + 4 ) - 1
правильный вывод: 10 3 4 + - 1 -
но мой вывод: 10 3 4 + 1 - -
И это часть моего кода. Я проверил некоторые части, которые, как мне казалось, были неправильными. оператор - это имя стека, который я сделал.
public String infix to (String infix) throws ArrayIndexOutOfBoundsException {
int result=0;
arr = infix.split(" ");
String element = "";
String postfix="";
for(int i=0; i<arr.length; i++) {
element = arr[i];
if(element.equals("+")||element.equals("-")) {
operator.push(element);
}
else if(element.equals("(")) {
operator.push(element);
}
else if(element.equals(")")) {
//**As I think, this part might wrong**
while((!operator.empty())||(!operator.peek().equals("("))){
postfix = postfix.concat(operator.pop());
postfix = postfix.concat(" ");
if(operator.peek().equals("(")) {
operator.pop();
}
break;
}
}
else if(isNum(element)){
postfix = postfix.concat(element);
postfix = postfix.concat(" ");
}
}
while(!operator.empty()) {
postfix = postfix.concat(operator.pop());
postfix = postfix.concat(" ");
}
return postfix;
}
public static boolean isNum(String s) {
try {
Integer.parseInt(s);
return true;
}
catch(NumberFormatException e) {
return false;
}
}
Спасибо вам всем.