Skip to content
Snippets Groups Projects
Commit 10151e91 authored by Amalie Nystuen's avatar Amalie Nystuen
Browse files

Oppgave 9

parent 9a94e255
Branches
No related tags found
No related merge requests found
Pipeline #114635 passed
......@@ -21,7 +21,7 @@ public class CalculatorResource {
@POST
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.TEXT_PLAIN)
public int calculate(String expression){
public int calculate(String expression)throws IllegalArgumentException{
// Removes all whitespaces
String expressionTrimmed = expression.replaceAll("\\s+","");
......@@ -37,9 +37,13 @@ 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);
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);
else{
throw new IllegalArgumentException("Du må skrive i riktig format");
}
return result;
}
......@@ -50,11 +54,14 @@ public class CalculatorResource {
*/
public int sum(String expression){
String[] split = expression.split("[+]");
int sum = Integer.parseInt(split[0]);
int number1 = Integer.parseInt(split[0]);
int number2 = Integer.parseInt(split[1]);
for (int i = 1; i < split.length ;i++){
int number = Integer.parseInt(split[i]);
sum += number;
}
return number1 + number2;
return sum;
}
/**
......@@ -64,29 +71,39 @@ public class CalculatorResource {
*/
public int subtraction(String expression){
String[] split = expression.split("[-]");
int sum = Integer.parseInt(split[0]);
int number1 = Integer.parseInt(split[0]);
int number2 = Integer.parseInt(split[1]);
return number1 - number2;
for (int i = 1; i < split.length ;i++){
int number = Integer.parseInt(split[i]);
sum -= number;
}
return sum;
}
public int multiplication(String expression){
String[] split = expression.split("[*]");
int number1 = Integer.parseInt(split[0]);
int number2 = Integer.parseInt(split[1]);
int sum = Integer.parseInt(split[0]);
return number1 * number2;
for (int i = 1; i < split.length ;i++){
int number = Integer.parseInt(split[i]);
sum *= number;
}
return sum;
}
public int division(String expression){
String[] split = expression.split("[/]");
int number1 = Integer.parseInt(split[0]);
int number2 = Integer.parseInt(split[1]);
int sum = Integer.parseInt(split[0]);
for (int i = 1; i < split.length ;i++){
int number = Integer.parseInt(split[i]);
sum /= number;
}
return number1 / number2;
return sum;
}
}
......@@ -7,14 +7,19 @@ public class CalculatorResourceTest{
@Test
public void testCalculate(){
try {
CalculatorResource calculatorResource = new CalculatorResource();
String expression = "100+300";
String expression = "+100+300";
assertEquals(400, calculatorResource.calculate(expression));
expression = " 300 - 99 ";
assertEquals(201, calculatorResource.calculate(expression));
}
catch (IllegalArgumentException e) {
System.out.println("Exeption: " + e.getMessage());
}
}
@Test
public void testSum(){
......@@ -23,8 +28,8 @@ public class CalculatorResourceTest{
String expression = "100+300";
assertEquals(400, calculatorResource.sum(expression));
expression = "300+99";
assertEquals(399, calculatorResource.sum(expression));
expression = "300+99+1";
assertEquals(400, calculatorResource.sum(expression));
}
@Test
......@@ -34,8 +39,8 @@ public class CalculatorResourceTest{
String expression = "999-100";
assertEquals(899, calculatorResource.subtraction(expression));
expression = "20-2";
assertEquals(18, calculatorResource.subtraction(expression));
expression = "20-2-1";
assertEquals(17, calculatorResource.subtraction(expression));
}
@Test
......@@ -45,8 +50,8 @@ public class CalculatorResourceTest{
String expression = "100*4";
assertEquals(400, calculatorResource.multiplication(expression));
expression = "6*6";
assertEquals(36, calculatorResource.multiplication(expression));
expression = "6*6*2";
assertEquals(72, calculatorResource.multiplication(expression));
}
......@@ -57,8 +62,8 @@ public class CalculatorResourceTest{
String expression = "10/2";
assertEquals(5, calculatorResource.division(expression));
expression = "36/6";
assertEquals(6, calculatorResource.division(expression));
expression = "36/6/6";
assertEquals(1, calculatorResource.division(expression));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment