반응형
이전에 배운 Java 기능 활용하면 간단하게 로또 번호를 생성하는 프로그램을 만들 수 있습니다.
기본 기능으로는 데이터를 저장할 배열, 데이터를 생성할 랜덤 함수, 그리고 정렬과 출력을 구현할 것입니다.
아래의 글들은 이번 기능에 사용한 리스트입니다.
[Dev/Java] - [Java] 반복 제어 for문 활용법
[Dev/Java] - [Java] 데이터의 집합 배열
[Dev/Java] - [Java] 정렬, 배열을 이용한 선택정렬 방법
또한, 랜덤 값을 출력하려면 난수를 발생하는 메소드가 필요한데요.
이는 Math.random()의 기능을 사용하도록 하겠습니다.
Math.random 기능은 double 형태의 값을 가지면 0.1~1.0의 값을 리턴합니다.
구현 로직
- 로또 번호를 저장할 배열을 선언
- 1~45까지의 난수를 6개 발생시켜 값을 저장
- 이러한 형태의 배열 값을 총 30개 저장 (6 * 30 총 180개 숫자)
- 하나의 회차(1회전 -> 값 6개) 진행 후 해당 값 출력
- 출력 전에 저장된 값을 순서대로 정렬
- 인접된 값이 서로 같으면 해당 로또 값은 폐기
- 이런 식으로 총 30회까지 진행
- 중복되지 않은 값이 총 5개까지 출력되면 프로그램 종료.
위의 로직이 프로그램 구현 상세 내용입니다.
로또 번호 생성 소스 코드
import java.io.IOException;
import java.util.Arrays;
public class Exm {
public static void main(String[] args) throws IOException {
System.out.println("*로또번호 랜덤 생성*");
int idx_num = 0;
int lotto_num[] = new int[6];
String result_txt = "";
for(int i=1; i<=30; i++){
result_txt = "";
result_txt += idx_num+1+"회 : [ ";
//6개의 랜덤번호를 저장
for(int j=0; j<=5; j++){
int num_temp = (int) (Math.random()*44+1);
lotto_num[j] = num_temp;
}
//저장된 숫자 정렬
Arrays.sort(lotto_num);
//중복된 값 체크
boolean duple = false;
for(int k=0; k<lotto_num.length; k++){
if(k==lotto_num.length-1) { //6번째 숫자일 경우
result_txt += lotto_num[k]+" ]";
}else if(lotto_num[k]!=lotto_num[k+1]){ //list 내 인접한 숫자가 중복되지 않을 경우
result_txt += lotto_num[k]+", \t";
}else { //중복된 숫자가 있을 경우 flag 체크
duple = true;
}
}
if(idx_num==5)break; //로또번호는 5번만 출력
if(duple==false) { //중복된 숫자가 없으면 로또번호 출력
idx_num++;
System.out.println(result_txt);
}
}
}
}
위의 프로그램을 구동한 모습입니다.
이번 코드에서는 중복되면 출력되지 않는 형태의 코드인데요.
중복이 발생하면 이를 제거하고 다시 출력하는 형태를 갖는 것도
하나의 방법이 될 수 있습니다.
반응형
'Dev > Java' 카테고리의 다른 글
[Java] 접근제어자 정의 및 사용법 (Access Modifier) (0) | 2022.11.07 |
---|---|
[Java] 클래스와 메소드 생성, 호출 사용법 (0) | 2022.11.04 |
[Java] Arraylist 데이터 정렬 방법과 메소드 (0) | 2022.11.01 |
[Java] List, Arraylist 사용법 및 활용 (0) | 2022.10.30 |
[Java] 정렬, 배열을 이용한 선택정렬 방법 (0) | 2022.10.28 |