-
Notifications
You must be signed in to change notification settings - Fork 351
Expand file tree
/
Copy pathRandomCoinGenerator.java
More file actions
44 lines (39 loc) · 1.27 KB
/
Copy pathRandomCoinGenerator.java
File metadata and controls
44 lines (39 loc) · 1.27 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
package vendingmachine.coin.generator;
import camp.nextstep.edu.missionutils.Randoms;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
import vendingmachine.coin.Coin;
public class RandomCoinGenerator implements CoinGenerator{
@Override
public Map<Coin, Integer> getCoins(int totalMoney) {
EnumMap<Coin, Integer> coins = initCoins();
List<Integer> integers = initIntegers();
while(totalMoney > 0){
int amount = Randoms.pickNumberInList(integers);
if(amount > totalMoney){
continue;
}
Coin coin = Coin.getCoins(amount);
coins.put(coin, coins.get(coin) + 1);
totalMoney -= amount;
}
return coins;
}
private static EnumMap<Coin, Integer> initCoins() {
EnumMap<Coin, Integer> coins = new EnumMap<>(Coin.class);
Arrays.stream(Coin.values())
.forEach(coin -> coins.put(coin, 0));
return coins;
}
private static List<Integer> initIntegers() {
List<Integer> integers = new ArrayList<>();
integers.add(500);
integers.add(100);
integers.add(50);
integers.add(10);
return integers;
}
}