Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/main/java/ArithmeticOperator.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
9 changes: 9 additions & 0 deletions src/main/java/Calculator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
public class Calculator {

public static int getSum(String[] inputs) {
if(Validator.checkIfEmpty(inputs) == false){
return 0;
}
return ArithmeticOperator.sum(inputs);
}
}
8 changes: 8 additions & 0 deletions src/main/java/CalculatorApp.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
20 changes: 20 additions & 0 deletions src/main/java/Deciferer.java
Original file line number Diff line number Diff line change
@@ -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(",|;");
}
}
9 changes: 9 additions & 0 deletions src/main/java/InputView.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
5 changes: 5 additions & 0 deletions src/main/java/OutputView.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
public class OutputView {
public static void sumResult(int sum) {
System.out.println(sum);
}
}
8 changes: 8 additions & 0 deletions src/main/java/Validator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
public class Validator {
public static boolean checkIfEmpty(String[] input) {
if(input[0].equals("")){
return false;
}
return true;
}
}
19 changes: 19 additions & 0 deletions src/test/java/ArithmeticOperatorTest.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
20 changes: 20 additions & 0 deletions src/test/java/CalculatorTest.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
22 changes: 22 additions & 0 deletions src/test/java/DecifererTest.java
Original file line number Diff line number Diff line change
@@ -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"});
}
}
20 changes: 20 additions & 0 deletions src/test/java/ValidatorTest.java
Original file line number Diff line number Diff line change
@@ -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);
}
}