for문에 Stream을 적용해보자!👊
카테고리:
tag #
2023년 11월 14일
// Links to the libraries needed
for (Winning winning : Winning.values()) {
result.put(winning, 0);
}
Arrays.stream(Winning.values())
.forEach(value -> result.put(value, 0));
public List<Integer> stringToList(String input) throws IllegalArgumentException {
List<Integer> player = new ArrayList<>();
String[] numbers = input.split(",");
for (String number : numbers) {
int playerNumber = inputToInt(number);
player.add(playerNumber);
}
return player;
}
public List<Integer> stringToList(String input) throws IllegalArgumentException {
return Arrays.stream(input.split(","))
.map(this::inputToInt)
.collect(Collectors.toList());
}
public void printResult(int purchasePrice) {
int totalPrice = 0;
System.out.println("\n" + PrintOutput.RESURLT_LOTTO + "\n---");
for (Winning winning : Winning.values()) {
totalPrice += winning.getWinningPrice() * result.get(winning);
printMatch(winning);
}
System.out.printf("총 수익률은 %,.1f%%입니다.", (double) totalPrice / purchasePrice * 100);
}
public static Winning result(int matchNumber, int checkBonusBall){
if (matchNumber == SECOND.matchNumber && checkBonusBall == SECOND.checkBonusBall){
return SECOND;
}
for (Winning winning : values()){
if (winning.matchNumber == matchNumber){
return winning;
}
}
return No_Match;
}
public static Winning result(int matchNumber, int checkBonusBall){
if (matchNumber == SECOND.matchNumber && checkBonusBall == SECOND.checkBonusBall){
return SECOND;
}
return Arrays.stream(Winning.values())
.filter(winning -> winning.matchNumber == matchNumber)
.findAny()
.orElse(No_Match);
}
private void matchResult(List<Lotto> randomLottoNumbers, int bonusNumber) {
for (Lotto userLottoNumbers : randomLottoNumbers) {
int[] matchNumber = winningNumbers.matchNumber(userLottoNumbers, bonusNumber);
winningData.winningResult(matchNumber[0], matchNumber[1]);
}
}
private void number_check(List<Integer> numbers) {
for (Integer number : numbers) {
if (number < MIN_NUMBER || number > MAX_NUMBER) {
System.out.println("[ERROR] 로또 번호 1부터 45까지의 수로 입력해주세요.\n");
throw new IllegalArgumentException();
}
}
}
public int[] matchNumber(Lotto lottoNumbers, int bonusBall){
int[] matchResult = new int[]{0,0};
for (int number : lottoNumbers.numbers){
if (numbers.contains(number)){
matchResult[0] += 1;
}
}
if (lottoNumbers.numbers.contains(bonusBall)){
matchResult[1] = 1;
}
return matchResult;
}
matchResult[0] = (int) lottoNumbers.numbers.stream()
.filter(number -> numbers.contains(number))
.count();
matchResult[0] = (int) lottoNumbers.numbers.stream()
.filter(numbers::contains)
.count();