|
1 | 1 | package calculator.service; |
2 | 2 |
|
3 | | -import java.util.Arrays; |
| 3 | +import calculator.validator.CalculatorValidator; |
4 | 4 |
|
5 | 5 | public class CalculatorService { |
| 6 | + private final CalculatorValidator calculatorValidator; |
6 | 7 | private String inputString; |
7 | 8 | private String customSeparator; |
8 | 9 |
|
| 10 | + public CalculatorService() { |
| 11 | + this.calculatorValidator = new CalculatorValidator(); |
| 12 | + } |
| 13 | + |
9 | 14 | /** |
10 | 15 | * 덧셈 로직을 순차적으로 진행한다. |
11 | 16 | */ |
12 | 17 | public int add(String inputString) { |
13 | 18 | this.inputString = inputString; |
14 | 19 | boolean hasCustomSeparator = checkCustomSeparator(); |
15 | 20 | String[] separatedString = separate(hasCustomSeparator); |
16 | | - hasNaN(separatedString); |
| 21 | + calculatorValidator.hasNaN(separatedString); |
17 | 22 | return sumSeparatedStringArr(separatedString); |
18 | 23 | } |
19 | 24 |
|
@@ -47,19 +52,6 @@ private String[] separate(boolean hasCustomSeparator) { |
47 | 52 | return inputString.split("[:," + customSeparator + "]"); |
48 | 53 | } |
49 | 54 |
|
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 | | - |
63 | 55 | /** |
64 | 56 | * 문자열을 int 형으로 바꾼 뒤 합한다. |
65 | 57 | * |
|
0 commit comments