JavaRush /Java блог /Архив info.javarush /Задача: Распарсить математическое выражение через рекурси...
InCornito
23 уровень
Львов

Задача: Распарсить математическое выражение через рекурсию

Статья из группы Архив info.javarush
Привет всем! Помогите пожалуйста решить задачу: нужно Распарсить математическое выражение через рекурсию. Используются положительные и отрицательные числа и только + - * / Мое решение не проходит вариант 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); } }
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ