diff --git a/src/main/java/resources/CalculatorResource.java b/src/main/java/resources/CalculatorResource.java index fa9cb6889a8d3fde53cf2465e15e2ca06e605ba8..d7cedcc4d0e10b1ff3268dcc4c66a254c098cbf4 100644 --- a/src/main/java/resources/CalculatorResource.java +++ b/src/main/java/resources/CalculatorResource.java @@ -37,10 +37,10 @@ public class CalculatorResource { * 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); - else if(expressionTrimmed.matches("[0-9]+[*][0-9]+")) result = multiplication(expressionTrimmed); - else if(expressionTrimmed.matches("[0-9]+[/][0-9]+")) result = division(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; } @@ -52,11 +52,13 @@ public class CalculatorResource { */ public int sum(String expression){ String[] split = expression.split("[+]"); + int length = len(split) - int number1 = Integer.parseInt(split[0]); - int number2 = Integer.parseInt(split[1]); - - return number1 + number2; + for(int i = 0; i<length; i++){ + int number = Integer.parseInt(split[i]); + int sum += number + } + return sum; } /** @@ -66,28 +68,34 @@ public class CalculatorResource { */ public int subtraction(String expression){ String[] split = expression.split("[-]"); - - int number1 = Integer.parseInt(split[0]); - int number2 = Integer.parseInt(split[1]); - - return number1 - number2; + int length = len(split) + + for(int i = 0; i<length; i++){ + int number = Integer.parseInt(split[i]); + int result -= number + } + return result; } public int multiplication(String expression){ String[] split = expression.split("[*]"); + int length = len(split) - int number1 = Integer.parseInt(split[0]); - int number2 = Integer.parseInt(split[1]); - - return number1 * number2; + for(int i = 0; i<length; i++){ + int number = Integer.parseInt(split[i]); + int result *= number + } + return result; } public int division(String expression){ String[] split = expression.split("[/]"); + int length = len(split) - int number1 = Integer.parseInt(split[0]); - int number2 = Integer.parseInt(split[1]); - - return number1 / number2; + for(int i = 0; i<length; i++){ + int number = Integer.parseInt(split[i]); + int result /= number + } + return result; } }