diff --git a/src/main/java/resources/CalculatorResource.java b/src/main/java/resources/CalculatorResource.java index 1a13e3314d7f25663b6ff16d657729527487d8e7..5a49624aeac1413b2b627c4feecd0ea6b2ec78df 100644 --- a/src/main/java/resources/CalculatorResource.java +++ b/src/main/java/resources/CalculatorResource.java @@ -1,5 +1,7 @@ package resources; +import org.graalvm.compiler.hotspot.stubs.DivisionByZeroExceptionStub; + import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; @@ -38,28 +40,37 @@ public int calculate(String expression) { * 1+2, * 10000+1000 */ - if (expressionTrimmed.matches("[0-9]+[+][0-9]+")) result = sum(expressionTrimmed); - else if (expressionTrimmed.matches("[0-9]+[-][0-9]+")) result = subtraction(expressionTrimmed); + + if (expressionTrimmed.matches("^\\d+(?:\\s*[+]\\s*\\d+)*$")) result = sum(expressionTrimmed); + else if (expressionTrimmed.matches("^\\d+(?:\\s*[-]\\s*\\d+)*$")) result = subtraction(expressionTrimmed); + else if (expressionTrimmed.matches("^\\d+(?:\\s*[*]\\s*\\d+)*$")) result = multiplication(expressionTrimmed); + else if (expressionTrimmed.matches("^\\d+(?:\\s*[/]\\s*\\d+)*$")) result = division(expressionTrimmed); return result; } public int multiplication(String equation) { String[] split = equation.split("[*]"); + int sum = 0; + for (int i = 0; i < split.length; i++) { + sum *= Integer.parseInt(split[i]); + } - int number1 = Integer.parseInt(split[0]); - int number2 = Integer.parseInt(split[1]); - - return number1 * number2; + return sum; } - public int division(String equation) { + public int division(String equation){ String[] split = equation.split("[/]"); + try{ + int sum = 0; + for (int i = 0; i < split.length; i++) { + sum = Integer.parseInt(split[i]); + } + + return sum; + }catch (DivisionByZeroExceptionStub e){ + } - int number1 = Integer.parseInt(split[0]); - int number2 = Integer.parseInt(split[1]); - - return number1 / number2; } /** @@ -69,11 +80,13 @@ public int calculate(String expression) { */ public int sum (String expression){ String[] split = expression.split("[+]"); + int sum = Integer.parseInt(split[0]); + for (int i = 1; i < split.length; i++) { + sum += Integer.parseInt(split[i]); - int number1 = Integer.parseInt(split[0]); - int number2 = Integer.parseInt(split[1]); + } - return number1 + number2; + return sum; } /** @@ -83,10 +96,12 @@ public int calculate(String expression) { */ public int subtraction (String expression){ String[] split = expression.split("[-]"); + int sum = Integer.parseInt(split[0]); + for (int i = 1; i < split.length; i++) { + sum -= Integer.parseInt(split[i]); + } - int number1 = Integer.parseInt(split[0]); - int number2 = Integer.parseInt(split[1]); - return number1 - number2; + return sum; } }