diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java new file mode 100644 index 00000000..407e341a --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,50 @@ +public class Calculator { + int add(int a, int b) { + return a + b; + } + + int subtract(int a, int b){ + return a - b; + } + int multiply(int a, int b){ + return a * b; + } + int divide(int a, int b){ + return a / b; + } + + public int calculateString(String input) { + if (input == null | input.isEmpty()) { + return 0; + } + + String separator = "[,:]";//정규표현식. split()메소드에서 사용된다. '[]안의 문자중 하나와 일치'라는 의미를 갖는다. + String numbersStr = input; + + if (input.substring(0, 2).equals("//")) { + int slashStartIndex = input.indexOf("//"); + int newLineStartIndex = input.indexOf("/n"); + + if (newLineStartIndex != -1) { + String customSeparator = input.substring(slashStartIndex + 2, newLineStartIndex); + separator = "[,:" + customSeparator + "]"; + numbersStr = input.substring(newLineStartIndex + 1);//개행문자는 하나의 문자로 취급. + } + } + + String[] numbers = numbersStr.split(separator); + + int sum = 0; + for (String number : numbers) { + if (!number.isEmpty()) { + int value = Integer.parseInt(number);//String 배열에 있는 numbers를 하나씩 int형으로 변환 + if (value < 0) { + throw new RuntimeException("음수는 사용할 수 없습니다 : " + value); + } + sum += value; + } + } + return sum; + } +} + diff --git a/src/test/java/CalculatorTest.java b/src/test/java/CalculatorTest.java new file mode 100644 index 00000000..51937dde --- /dev/null +++ b/src/test/java/CalculatorTest.java @@ -0,0 +1,41 @@ +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class CalculatorTest { + Calculator c = new Calculator(); + + @Test + void testAdd(){ + int result = c.add(2,3); + assertEquals(5,result); + } + @Test + void testSubtract(){ + int result = c.subtract(2,3); + assertEquals(-1,result); + } + + @Test + void testMultiply(){ + int result = c.multiply(2,3); + assertEquals(6,result); + } + @Test + void testDivide(){ + int result = c.divide(6,3); + assertEquals(2,result); + } + + @Test + void testCalculateString(){ + int result = c.calculateString("1,2:3"); + assertEquals(6,result); + result = c.calculateString(""); + assertEquals(0,result); + result = c.calculateString("1,2"); + assertEquals(3,result); + result = c.calculateString("1,2,3"); + assertEquals(6,result); + } +}