Привет всем!
Помогите пожалуйста решить задачу:
нужно Распарсить математическое выражение через рекурсию.
Используются положительные и отрицательные числа и только + - * /
Мое решение не проходит вариант System.out.println(parse("-4-5-(-6)"));
public static void main(String[] args) {
System.out.println(parse("-4-5-(-6)"));
}
private static int parse(String s) {
if (s.startsWith("(") && s.endsWith(")")) {
return parse(s.substring(1, s.length() - 1));
} else {
int position = 0;
if (s.charAt(position) == '-' && s.charAt(position+1) == '('){
return parse(s.substring(1));
}
if (s.charAt(position) == '-'){
position++;
}
while (position < s.length() - 1) {
if (Character.isDigit(s.charAt(position))) {
position++;
} else {
int leftSide= Integer.parseInt(s.substring(0, position));
char operator = s.charAt(position);
int rightSide;
if (operator == '-')rightSide = parse(s.substring(position));
else rightSide = parse(s.substring(position + 1));
switch (operator) {
case '+':
return leftSide + rightSide;
case '-': return leftSide - rightSide;
case '*':
return leftSide * rightSide;
case '/':
return leftSide / rightSide;
}
}
}
return Integer.parseInt(s);
}
}
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ