처음에는 변하지 않을 값들을 final를 통해 지정해 놓는다
로또번호가 나올수 있는 것을 LOTTO_SIZE = 45
보너스 번호는 몇번째에 나오게 할 것인가를 BOUNUS_INDEX = 4
그리고 HashSet 배열을 만들어서 lotto로 지정하고 (중복 없이 값을 넣기 위해 HashSet 사용)
인자값을 int 형 변수 len으로 받는다
이렇게 메서드를 만들면, 로또 당첨번호를 무작위로 중복 없이 뽑을 때랑
내가 로또번호를 추첨할때랑 길이만 다르게 하면 되기 때문에 매머드 하나로 두 가지를 만들 수 있다
일단, 당첨번호를 생성하는데
while문을 통하여 설정한 길이 len 과 lotto.size()
즉, 로또 번호의 총 길이와 설정한 길이 같을 때까지 반복해서 값을 넣는다는 뜻
그리고, 제일 중요한 보너스 번호의 위치를 확인하기 위해서
가정문을 통하여
만약 로또 번호가 7개이고, 로또 사이즈가 4개가 됐을 때 (lotto.size() == BONUS_INDEX)
그때 추가하는 값은 보너스볼이다.
그렇게 보너스볼이 무엇인지 판별한 뒤에 로또 당첨번호를 리턴해준다
그 다음에는 test 메서드를 만들고
처음에는 로또당첨번호를 뽑고
그 후에 추첨번호를 뽑는 로직을 짜면 되는데,
checkList 라는 배열 리스트를 만들고 이제 그걸 이용해서 Set형식인 (당첨번호, 뽑은 번호) 두 가지 번호를 비교해줄 거다
checkList에 당첨번호를 다 넣고 뽑은번호와의 removeAll을 해서 겹치는 부분은 전부 다 없애주는 형식
그렇게 없앴는데 사이즈가 1이 남았다는 것은 당첨됐다는 얘기다
쉽게 말해서, 로또 당첨 번호는 7개 - 뽑은 번호 6개 = 1개
1등 아니면 2등이라는 소리.
이제 마지막으로 가정문을 사용하여, get으로 첫 번째 인덱스를 가져왔을 때 그것이 보너스라면
즉, 보너스 번호 빼고 6개씩 다 같은 값이라면 1등을 출력
아니라면 2등을 출력해주면 된다
그리고 로또번호를 뽑을 때마다 카운트 횟수를 늘려주고,
끝날 때마다 clear()를 통해서 남아있는 값들을 모두 지워준다
그리고 main에서 test 메서드를 불러주면 끝!
'TIL > Java' 카테고리의 다른 글
Java 섯다 게임 구현하기 (1) | 2021.08.03 |
---|---|
Java Yacht dice game 구현하기 (0) | 2021.08.03 |
Java 로또만들기 - (오류발견 : 보너스번호관련) (0) | 2021.08.03 |
Basic Algorithm 14th (0) | 2021.08.03 |
Basic Algorithm 13th (0) | 2021.08.03 |