diff --git a/src/main/java/calculator/Calclator.java b/src/main/java/calculator/Calclator.java new file mode 100644 index 0000000..8580a89 --- /dev/null +++ b/src/main/java/calculator/Calclator.java @@ -0,0 +1,13 @@ +package calculator; + +public class Calclator { + Spliter spliter = new Spliter(); + public int sum(String[] splitedValue) { + int result = 0; + for (int i = 0; i < splitedValue.length; i++) { + result += spliter.parseToInt(splitedValue[i]); + } + return result; + } + +} \ No newline at end of file diff --git a/src/main/java/calculator/CalculatorApplication.java b/src/main/java/calculator/CalculatorApplication.java new file mode 100644 index 0000000..24a3bd4 --- /dev/null +++ b/src/main/java/calculator/CalculatorApplication.java @@ -0,0 +1,29 @@ +import calculator.Calclator; +import calculator.Spliter; + +import java.util.Scanner; + + +public class CalculatorApplication { + public static void main(String[] args) { + int result = 0; + System.out.println("숫자들을 입력하세요 : "); + Scanner scanner = new Scanner(System.in); + String inputValue = scanner.nextLine(); + if (inputValue.isEmpty()) { + System.out.println(result); + return; + } + + Spliter spliter = new Spliter(); + String[] splitedValue = spliter.splitValue(inputValue); + + System.out.println(splitedValue); + Calclator calclator = new Calclator(); + result = calclator.sum(splitedValue); + + System.out.println(result); + } + + +} \ No newline at end of file diff --git a/src/main/java/calculator/Spliter.java b/src/main/java/calculator/Spliter.java new file mode 100644 index 0000000..d7dd4c2 --- /dev/null +++ b/src/main/java/calculator/Spliter.java @@ -0,0 +1,53 @@ +package calculator; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class Spliter { + + public static final String DELIMITER1 = "[,|:]"; + public static final String CUSTOMER_DELIMITER = "//(.)\n(.*)"; + + public String[] splitValue(String value) { + Matcher m = Pattern.compile(CUSTOMER_DELIMITER).matcher(value); + System.out.println(m.find()); + if(m.find()){ + String customDelimiter = m.group(1); + String tokens =m.group(2); + String[] splitedValue = tokens.split(CUSTOMER_DELIMITER); + System.out.println(splitedValue[0]+"custom"); + System.out.println(splitedValue[1]+"custom"); + System.out.println(splitedValue[2]+"custom"); + } + + String[] splitedValue = value.split(DELIMITER1); + System.out.println(splitedValue[0]); + System.out.println(splitedValue[1]); + System.out.println(splitedValue[2]); + return splitedValue; + } + + public int parseToInt(String splitedValue) { + if (isNumberic(splitedValue)) { + int number = Integer.parseInt(splitedValue); + checkPositve(number); + return number; + } + throw new IllegalArgumentException("양수로 된 숫자만 입력하세요."); + } + + public void checkPositve(int parseInt) { + if (parseInt > 0) { + return; + } + throw new IllegalArgumentException("음수가 아닌 양수만 입력하세요."); + } + + public boolean isNumberic(String splitedValue) { + try { + Integer.parseInt(splitedValue); + return true; + } catch (IllegalArgumentException e) { + return false; + } + } +} diff --git a/src/main/java/calculator/empty.txt b/src/main/java/calculator/empty.txt deleted file mode 100644 index e69de29..0000000 diff --git a/src/test/java/calculator/CalclatorTest.java b/src/test/java/calculator/CalclatorTest.java new file mode 100644 index 0000000..14fdbdd --- /dev/null +++ b/src/test/java/calculator/CalclatorTest.java @@ -0,0 +1,20 @@ +package calculator; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; + + + +class CalculatorTest { + Spliter spliter = new Spliter(); + Calclator calclator = new Calclator(); + @Test + @DisplayName("올바른 계산") + void sum() { + String[] splitedValue = {"1","2","5"}; + assertThat(calclator.sum(splitedValue)).isEqualTo(8); + } +} \ No newline at end of file diff --git a/src/test/java/calculator/SpliterTest.java b/src/test/java/calculator/SpliterTest.java new file mode 100644 index 0000000..4438b80 --- /dev/null +++ b/src/test/java/calculator/SpliterTest.java @@ -0,0 +1,34 @@ +package calculator; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; +import static org.junit.jupiter.api.Assertions.*; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; + +class SpliterTest { + Spliter spliter = new Spliter(); + @Test + void splitValue() { +// String inputValue = new String("1,2:3"); +// assertThat(spliter.splitValue(inputValue)).isEqualTo(["1", "2", "3"]); + } + + @Test + @DisplayName("숫자가 아닐 때 테스트") + void parseToInt() { + String splitedValue = " "; + assertThatThrownBy(() -> spliter.parseToInt(splitedValue)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("양수로 된 숫자만 입력하세요."); + } + @Test + @DisplayName("음수를 입력했을 때 테스트") + void checkPositve() { + int negative = -1; + assertThatThrownBy(() -> spliter.checkPositve(negative)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("음수가 아닌 양수만 입력하세요."); + } + +} \ No newline at end of file diff --git a/src/test/java/calculator/empty.txt b/src/test/java/calculator/empty.txt deleted file mode 100644 index e69de29..0000000