-
Notifications
You must be signed in to change notification settings - Fork 36
/
Copy pathLadderResultCalculator.java
37 lines (27 loc) · 1.13 KB
/
LadderResultCalculator.java
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
package model;
import java.util.Arrays;
import java.util.List;
public class LadderResultCalculator {
private final LadderUsers ladderUsers;
private final List<String> resultValues;
public LadderResultCalculator(LadderUsers ladderUsers, String[] resultValues) {
validateSize(ladderUsers, resultValues);
this.ladderUsers = ladderUsers;
this.resultValues = Arrays.stream(resultValues)
.toList();
}
public String calculate(String name, Ladder ladder) {
int index = ladderUsers.findIndexOfUserByName(name)
.orElseThrow(() -> new IllegalArgumentException("존재하지 않는 이름입니다."));
int endPoint = ladder.getEndPoint(index);
return findResultByIndex(endPoint);
}
private void validateSize(LadderUsers ladderUsers, String[] resultValues) {
if (ladderUsers.size() != resultValues.length) {
throw new IllegalArgumentException("참여자의 수와 실행 결과의 수가 일치하지 않습니다.");
}
}
private String findResultByIndex(int index) {
return resultValues.get(index);
}
}