-
Notifications
You must be signed in to change notification settings - Fork 588
Expand file tree
/
Copy pathInputException.java
More file actions
56 lines (47 loc) · 1.61 KB
/
Copy pathInputException.java
File metadata and controls
56 lines (47 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package baseball;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;
public class InputException {
private static final String NOT_NUMBER = "숫자가 아닙니다.";
private static final String NOT_NUMBER_LENGTH = "숫자의 길이가 맞지 않습니다.";
private static final String DUPLICATED = "중복된 숫자가 있습니다.";
private static final String OUT_OF_RANGE = "숫자가 1~9 범위를 벗어났습니다.";
private static final String NUMBER_REGEX = "^[0-9]*$";
private InputException() {
}
public static void validatesNumber(String inputNumbers) {
isNumber(inputNumbers);
isLength(inputNumbers);
isDuplicated(inputNumbers);
isInRange(inputNumbers);
}
public static void isNumber(String inputNumbers) {
if (!Pattern.matches(NUMBER_REGEX, inputNumbers)) {
exception(NOT_NUMBER);
}
}
public static void isLength(String inputNumbers) {
if (inputNumbers.length() != 3) {
exception(NOT_NUMBER_LENGTH);
}
}
public static void isDuplicated(String inputNumbers) {
List<String> inputNumberList = Arrays.asList(inputNumbers.split(""));
if (inputNumberList.stream().distinct().count() < 3) {
exception(DUPLICATED);
}
}
public static void isInRange(String inputNumbers) {
String[] inputNumberList = inputNumbers.split("");
for (String num : inputNumberList) {
int number = Integer.parseInt(num);
if (number < 1 || number > 9) {
exception(OUT_OF_RANGE);
}
}
}
private static void exception(String message) {
throw new IllegalArgumentException(message);
}
}