자바를 공부하면서 반복문을 배우게 되면 많이 하는 것들 중 하나는 로또 번호를 생성하는 것이다.
대충 요구사항은 이렇다.
항상 코드를 짜기 전에 먼저 잘게 쪼개서 모든 과정을 생각해봐야 한다.
1. 1~45의 랜덤값을 생성
2. 중복되지 않은 랜덤값 6개를 저장
3. 오름차순으로 정렬
4. 출력
우선 메인 메소드부터 짜면서 필요한 기능들을 메소드로 제작해보자
scanner 클래스를 이용해 게임 수를 직접 입력받았다.
for 문에서 첫 번째로 필요한 getLotto 메소드를 만들어보자
1. 1~45의 랜덤값을 생성
자바에서 랜덤값은 어떻게 생성할까?
자바에서 제공하는 Math.random() 함수를 통해 생성할 수 있다.
Math.random() 함수는 0.0 ~ 0.9999... 사이의 수를 랜덤 하게 생성한다.
그렇다면 Math.random() 값에 10을 곱해준다면 0.0 ~9.9999 사이의 수를 생성한다.
int로 형변환을 한다면 0 ~ 9 사이의 수를 생성할 것이다.
45를 곱해준다면 0 ~ 44 사이의 수를 생성할 것이고 +1을 해준다면 1 ~ 45 사이의 수를 생성할 것이다.
1번 해결
2. 중복되지 않은 랜덤값 6개를 저장
그렇다면 반복문의 횟수가 정확하지 않기 때문에
https://signaldogfeet.tistory.com/48
for문과 while문의 사용법
자바에는 다양한 반복문이 있지만 가장 많이 사용하는 것이 for문과 while문 일 것이다.for문 이전에 while문이 있었다. 모든 for문은 while문으로 대체될 수 있고 그 반대도 마찬가지이다.그렇다면 w
signaldogfeet.tistory.com
을 참고해 보면 while문을 써야 할 것이다.
6개의 값을 넣었지만 중복이 존재할 수 있다.
이제 중복값을 체크해야 한다.
메소드 하나는 하나의 기능만을 해야 한다.
checkNum의 메소드를 만들어보자
중복 체크하여 값을 넣는 메소드까지 완성하였다
다시 메인 메소드로 돌아가보자
getLotto 메소드까지 완성하였다.
그다음 오름차순 정렬인데 고맙게도 자바에서 제공하는 오름차순 함수가 존재해 사용하였다.
물론 오름차순 메소드도 따로 만들 수 있기 때문에 연습 삼아 한번 해보는 게 좋다.
마지막으로 출력하기 위해 필요한 printLotto메소드이다.
문자열로 반환해 주는 toString()메소드가 있지만 만들어보았다.
이렇게 게임수를 입력받아 로또 번호를 생성하는 어플리케이션을 만들었다.
중요한 것은 에러가 나지 않는 것?
메소드의 구현부를 최대한 심플하게 짜는 것?
물론 중요하지만 가장 중요한 것은 요구사항을 정확히 파악하여 먼저 메인 함수에 기본적인 흐름과 틀을 잡는 것이다.
메소드는 누구나 어떤 식으로든 짤 수 있지만 아키텍처를 구상하고 짜임새를 튼튼하게 만드는 것은 어렵다.
'JAVA' 카테고리의 다른 글
JAVA static이란? (0) | 2024.07.11 |
---|---|
getter와 setter (2) | 2024.07.10 |
디버깅 (0) | 2024.07.08 |
for문과 while문의 사용법 (0) | 2024.07.04 |
startsWith 와 endsWith - java (0) | 2023.07.25 |