forked from woowacourse-precourse/java-baseball-6
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathAnswer.java
More file actions
48 lines (40 loc) · 1.54 KB
/
Answer.java
File metadata and controls
48 lines (40 loc) · 1.54 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
package baseball.domain;
import java.util.List;
import java.util.stream.IntStream;
public class Answer {
private enum AnswerStatus {RIGHT, WRONG}
private AnswerStatus status = AnswerStatus.WRONG;
private final Long strike;
private final Long ball;
public Answer(List<Integer> answerNumbers, List<Integer> playerNumbers) {
strike = countStrike(answerNumbers, playerNumbers);
ball = countContain(answerNumbers, playerNumbers) - strike;
if (Long.valueOf(BaseballNumber.BASEBALL_LENGTH).equals(strike)) {
this.status = AnswerStatus.RIGHT;
}
}
private Long countContain(List<Integer> answerNumbers, List<Integer> playerNumbers) {
return answerNumbers.stream().filter(playerNumbers::contains).count();
}
private Long countStrike(List<Integer> answerNumbers, List<Integer> playerNumbers) {
return IntStream.range(0, BaseballNumber.BASEBALL_LENGTH)
.filter(i -> answerNumbers.get(i).equals(playerNumbers.get(i)))
.count();
}
public boolean isStatusWRONG() {
return status.equals(AnswerStatus.WRONG);
}
public String getString() {
String statement = "";
if (ball > 0) {
statement = statement.concat(String.format("%d볼 ", ball));
}
if (strike > 0) {
statement = statement.concat(String.format("%d스트라이크", strike));
}
if (statement.isEmpty()) {
statement = statement.concat("낫싱");
}
return statement;
}
}