diff --git a/src/main/java/ArithmeticOperator.java b/src/main/java/ArithmeticOperator.java new file mode 100644 index 0000000..2ce17f4 --- /dev/null +++ b/src/main/java/ArithmeticOperator.java @@ -0,0 +1,7 @@ +import java.util.stream.Stream; + +public class ArithmeticOperator { + public static int sum(String[] inputs) { + return Stream.of(inputs).mapToInt(x-> Integer.parseInt(x)).reduce((a, b)-> a+b).getAsInt(); + } +} diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java new file mode 100644 index 0000000..73c14df --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,9 @@ +public class Calculator { + + public static int getSum(String[] inputs) { + if(Validator.checkIfEmpty(inputs) == false){ + return 0; + } + return ArithmeticOperator.sum(inputs); + } +} diff --git a/src/main/java/CalculatorApp.java b/src/main/java/CalculatorApp.java new file mode 100644 index 0000000..f104eee --- /dev/null +++ b/src/main/java/CalculatorApp.java @@ -0,0 +1,8 @@ +public class CalculatorApp { + public static void main(String[] args) { + String input = InputView.getInputs(); + String[] inputs = Deciferer.extractElements(input); + int sum = Calculator.getSum(inputs); + OutputView.sumResult(sum); + } +} diff --git a/src/main/java/Deciferer.java b/src/main/java/Deciferer.java new file mode 100644 index 0000000..f41be30 --- /dev/null +++ b/src/main/java/Deciferer.java @@ -0,0 +1,20 @@ +import java.lang.reflect.Array; +import java.util.Arrays; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class Deciferer { + + public static String[] extractElements (String input) { + Pattern pattern = Pattern.compile("(//([^\\d])\\\\n)(\\p{Alnum}+)"); + Matcher matcher = pattern.matcher(input); + + if (matcher.matches()) { + String customSeparator = matcher.group(2); + String otherString = matcher.group(3); + return otherString.split(customSeparator); + } + + return input.split(",|;"); + } +} diff --git a/src/main/java/InputView.java b/src/main/java/InputView.java new file mode 100644 index 0000000..a16d9be --- /dev/null +++ b/src/main/java/InputView.java @@ -0,0 +1,9 @@ +import java.util.Scanner; + +public class InputView { + private static Scanner scanner = new Scanner(System.in); + + public static String getInputs() { + return scanner.nextLine(); + } +} diff --git a/src/main/java/OutputView.java b/src/main/java/OutputView.java new file mode 100644 index 0000000..ec2e020 --- /dev/null +++ b/src/main/java/OutputView.java @@ -0,0 +1,5 @@ +public class OutputView { + public static void sumResult(int sum) { + System.out.println(sum); + } +} diff --git a/src/main/java/Validator.java b/src/main/java/Validator.java new file mode 100644 index 0000000..8b9f516 --- /dev/null +++ b/src/main/java/Validator.java @@ -0,0 +1,8 @@ +public class Validator { + public static boolean checkIfEmpty(String[] input) { + if(input[0].equals("")){ + return false; + } + return true; + } +} diff --git a/src/test/java/ArithmeticOperatorTest.java b/src/test/java/ArithmeticOperatorTest.java new file mode 100644 index 0000000..25e83e9 --- /dev/null +++ b/src/test/java/ArithmeticOperatorTest.java @@ -0,0 +1,19 @@ +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class ArithmeticOperatorTest { + private ArithmeticOperator arithmeticOperator; + @BeforeEach + void setUp() { + arithmeticOperator = new ArithmeticOperator(); + } + + @DisplayName("더하기") + @Test + public void getSum() { + assertThat(arithmeticOperator.sum(new String[] {"1","2","3"})).isEqualTo(6); + } +} diff --git a/src/test/java/CalculatorTest.java b/src/test/java/CalculatorTest.java new file mode 100644 index 0000000..88827cc --- /dev/null +++ b/src/test/java/CalculatorTest.java @@ -0,0 +1,20 @@ +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class CalculatorTest { + private Calculator calculator; + @BeforeEach + void setUp() { + calculator = new Calculator(); + } + + @DisplayName("더하기") + @Test + public void getSum() { + assertThat(calculator.getSum(new String[] {"1","2","3"})).isEqualTo(6); + assertThat(calculator.getSum(new String[] {""})).isEqualTo(0); + } +} diff --git a/src/test/java/DecifererTest.java b/src/test/java/DecifererTest.java new file mode 100644 index 0000000..505fc0b --- /dev/null +++ b/src/test/java/DecifererTest.java @@ -0,0 +1,22 @@ +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DecifererTest { + private Deciferer deciferer; + @BeforeEach + void setUp() { + deciferer = new Deciferer(); + } + + @DisplayName("문자 추출") + @Test + public void extractElements() { + assertThat(deciferer.extractElements("3;3;3")).isEqualTo(new String[] {"3","3","3"}); + assertThat(deciferer.extractElements("3,3;3")).isEqualTo(new String[] {"3","3","3"}); + assertThat(deciferer.extractElements("//a\\n3a3a3")).isEqualTo(new String[] {"3","3","3"}); + assertThat(deciferer.extractElements("3,3;3")).isEqualTo(new String[] {"3","3","3"}); + } +} diff --git a/src/test/java/ValidatorTest.java b/src/test/java/ValidatorTest.java new file mode 100644 index 0000000..5230a51 --- /dev/null +++ b/src/test/java/ValidatorTest.java @@ -0,0 +1,20 @@ +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class ValidatorTest { + private Validator validator; + @BeforeEach + void setUp() { + validator = new Validator(); + } + + @DisplayName("더하기") + @Test + public void getSum() { + assertThat(validator.checkIfEmpty(new String[] {"1","2","3"})).isEqualTo(true); + assertThat(validator.checkIfEmpty(new String[] {""})).isEqualTo(false); + } +}