-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathModel.java
More file actions
70 lines (53 loc) · 1.71 KB
/
Model.java
File metadata and controls
70 lines (53 loc) · 1.71 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package racingcar;
import camp.nextstep.edu.missionutils.Randoms;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class Model {
int numberOfAttempts;
int maxDistance = 0;
ArrayList<Car> carList;
void saveCarName(String input){
StringTokenizer st = new StringTokenizer(input, ",");
carList = new ArrayList<>();
while (st.hasMoreTokens()){
String name = st.nextToken();
if(name.length()>5) {
throw new IllegalArgumentException("5글자 이하로 작성");
}
carList.add(new Car(name));
}
}
void saveNumberOfAttempts(String input){
try {
numberOfAttempts = Integer.parseInt(input);
} catch (Exception e){
System.out.println("숫자를 입력하세요");
}
}
Map<String, Integer> race(){
Map<String, Integer> result = new HashMap<>();
while (numberOfAttempts --> 0) {
for (Car list : carList) {
int rand = Randoms.pickNumberInRange(0, 9);
list.addDistance(rand);
result.put(list.name, list.distance);
updateMaxValue(maxDistance, list.distance);
}
}
return result;
}
String findWinner(){
ArrayList<String> winners = new ArrayList<>();
for (Car list : carList) {
if(list.sameDistance(maxDistance)){
winners.add(list.name);
}
}
return winners.toString().replace("[", "").replace("]", "");
}
void updateMaxValue(int max, int distance){
maxDistance = Math.max(distance, max);
}
}