From db40d404cc2d4834ffe2e580ae5d2c7bbf8e51c0 Mon Sep 17 00:00:00 2001 From: minji Date: Sun, 27 Apr 2025 13:50:45 +0900 Subject: [PATCH 1/3] =?UTF-8?q?Calculator=20&=20test=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 1 + src/main/java/Calculator.java | 14 ++++++++++++++ src/test/java/CalculatorTest.java | 29 +++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 src/main/java/Calculator.java create mode 100644 src/test/java/CalculatorTest.java diff --git a/build.gradle b/build.gradle index 87254a3a..91736832 100644 --- a/build.gradle +++ b/build.gradle @@ -12,6 +12,7 @@ repositories { dependencies { testImplementation platform('org.junit:junit-bom:5.9.1') testImplementation('org.junit.jupiter:junit-jupiter') + testImplementation ('org.junit.jupiter:junit-jupiter:5.10.0') } test { diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java new file mode 100644 index 00000000..400d3965 --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,14 @@ +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; + } +} diff --git a/src/test/java/CalculatorTest.java b/src/test/java/CalculatorTest.java new file mode 100644 index 00000000..f9af7478 --- /dev/null +++ b/src/test/java/CalculatorTest.java @@ -0,0 +1,29 @@ +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); + } +} From 17dd8940cc715b326d0d402d6cf288fbe4ff0e1f Mon Sep 17 00:00:00 2001 From: minji Date: Sun, 27 Apr 2025 16:09:36 +0900 Subject: [PATCH 2/3] =?UTF-8?q?build.gradle=EC=9D=98=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EB=A1=A4=EB=B0=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle b/build.gradle index 91736832..87254a3a 100644 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,6 @@ repositories { dependencies { testImplementation platform('org.junit:junit-bom:5.9.1') testImplementation('org.junit.jupiter:junit-jupiter') - testImplementation ('org.junit.jupiter:junit-jupiter:5.10.0') } test { From e646f053667848a8ebc825ad0c76b49470a8669b Mon Sep 17 00:00:00 2001 From: minji Date: Wed, 30 Apr 2025 18:43:30 +0900 Subject: [PATCH 3/3] =?UTF-8?q?3=EB=8B=A8=EA=B3=84=20=EB=AC=B8=EC=9E=90?= =?UTF-8?q?=EC=97=B4=20=EA=B3=84=EC=82=B0=EA=B8=B0=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Calculator.java | 38 ++++++++++++++++++++++++++++++- src/test/java/CalculatorTest.java | 12 ++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java index 400d3965..407e341a 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -1,7 +1,8 @@ public class Calculator { - int add(int a, int b){ + int add(int a, int b) { return a + b; } + int subtract(int a, int b){ return a - b; } @@ -11,4 +12,39 @@ int multiply(int a, int 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 index f9af7478..51937dde 100644 --- a/src/test/java/CalculatorTest.java +++ b/src/test/java/CalculatorTest.java @@ -26,4 +26,16 @@ 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); + } }