Skip to content

Commit 0ea7745

Browse files
committed
refactor:CalculatorValidator 클래스 생성 및 로직 분리
1 parent 5897fa6 commit 0ea7745

2 files changed

Lines changed: 26 additions & 15 deletions

File tree

src/main/java/calculator/service/CalculatorService.java

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,24 @@
11
package calculator.service;
22

3-
import java.util.Arrays;
3+
import calculator.validator.CalculatorValidator;
44

55
public class CalculatorService {
6+
private final CalculatorValidator calculatorValidator;
67
private String inputString;
78
private String customSeparator;
89

10+
public CalculatorService() {
11+
this.calculatorValidator = new CalculatorValidator();
12+
}
13+
914
/**
1015
* 덧셈 로직을 순차적으로 진행한다.
1116
*/
1217
public int add(String inputString) {
1318
this.inputString = inputString;
1419
boolean hasCustomSeparator = checkCustomSeparator();
1520
String[] separatedString = separate(hasCustomSeparator);
16-
hasNaN(separatedString);
21+
calculatorValidator.hasNaN(separatedString);
1722
return sumSeparatedStringArr(separatedString);
1823
}
1924

@@ -47,19 +52,6 @@ private String[] separate(boolean hasCustomSeparator) {
4752
return inputString.split("[:," + customSeparator + "]");
4853
}
4954

50-
/**
51-
* 숫자가 아닌 문자열이 있는지 확인한다. 만약 있다면 IllegalArgumentException 으로 처리한다.
52-
*
53-
* @param separatedStringArr 숫자 외의 문자가 있는지 확인하고 싶은 문자열을 입력한다.
54-
*/
55-
private void hasNaN(String[] separatedStringArr) {
56-
if (Arrays.stream(separatedStringArr)
57-
.flatMapToInt(String::chars)
58-
.anyMatch(it -> it < '0' || it > '9')) {
59-
throw new IllegalArgumentException("입력한 문자열에 구분자, 숫자 외의 문자가 존재합니다.");
60-
}
61-
}
62-
6355
/**
6456
* 문자열을 int 형으로 바꾼 뒤 합한다.
6557
*
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package calculator.validator;
2+
3+
import java.util.Arrays;
4+
5+
public class CalculatorValidator {
6+
7+
/**
8+
* 숫자가 아닌 문자열이 있는지 확인한다. 만약 있다면 IllegalArgumentException 으로 처리한다.
9+
*
10+
* @param separatedStringArr 숫자 외의 문자가 있는지 확인하고 싶은 문자열을 입력한다.
11+
*/
12+
public void hasNaN(String[] separatedStringArr) {
13+
if (Arrays.stream(separatedStringArr)
14+
.flatMapToInt(String::chars)
15+
.anyMatch(it -> it < '0' || it > '9')) {
16+
throw new IllegalArgumentException("입력한 문자열에 구분자, 숫자 외의 문자가 존재합니다.");
17+
}
18+
}
19+
}

0 commit comments

Comments
 (0)