티스토리 뷰

[주제]

- 로또 번호 추첨 프로그램 만들기



[중요]

- 반복문을 사용하여 중복여부를 판단하는 과정



[소스 코딩]

package lottoClass;
 
import java.util.Scanner;
 
class lottoClass {
    public static void main(String[] args) {
/*
        1. 로또 1개는 숫자 1~45개 중에 숫자 6개를 무작위로 결정
        2. 숫자는 중복불가
        3. 사용자가 입력한 숫자는 무작위 결정 시 제외됨  ※ 15개 입력
        4. 제외되지 않은 숫자 중에서 로또 만들기  ※ 30개를 갖고 로또 5개 만들기
*/
        Scanner scan = new Scanner(System.in);
 
        int numCount = 30;
        int lottoArr[] = new int[numCount];
        int exArr[] = new int[15];
 
/*        
//      @테스트용 - 제외할 숫자가 들어있는 배열 
        int exArr[] = new int[] {11, 12, 13, 14, 15, 16, 17, 18, 
                                 19, 20, 21, 22, 23, 24, 25};
*/
        System.out.println("★★ 로또 추첨기 ★★");
        System.out.println("로또 추첨에서 제외할 숫자를 입력하세요");
 
//      추첨된 숫자에서 제외할 숫자 입력 + 제외 배열에 저장
        for (int i=0; i < 15; i++) {
            System.out.print("남은 제외 횟수 = " + (15 - i) + " 입력: ");
            exArr[i] = scan.nextInt();
        }
 
//      제외된 숫자 배열 확인용 출력
        System.out.println();
        System.out.println("[제외된 숫자는 아래와 같습니다]");
        for (int i=0; i < exArr.length; i++) {
            System.out.print(exArr[i] + " ");
        }
        System.out.println();
        System.out.println();
 
//      로또 추첨
        for (int i=0; i < numCount; i++) {
            lottoArr[i] = (int)(Math.random() * 45 + 1);
 
//          제외된 숫자 배열과 중복여부 비교
            for (int j=0; j < exArr.length; j++) {
                if (lottoArr[i] == exArr[j]){
                    i--;
                    break;
                }
            }
//          기존에 추첨된 로또 배열과 중복여부 비교            
            for(int k=0; k < i; k++) {
                if(lottoArr[i] == lottoArr[k]) {
                    i--;
                    break;
                }
            }
        }
 
//      결과 출력(로또 5개)
        System.out.println("[로또 리스트]");
        for(int i=0; i < 30; i++) {
            if(i == 0){
                System.out.print("1번 로또 = ");
            }
            if(i == 6) {
                System.out.println();
                System.out.print("2번 로또 = ");
            }
            if(i == 12) {
                System.out.println();
                System.out.print("3번 로또 = ");
            }
            if(i == 18) {
                System.out.println();
                System.out.print("4번 로또 = ");
            }
            if(i == 24) {
                System.out.println();
                System.out.print("5번 로또 = ");
            }
            System.out.print(lottoArr[i] + " ");
        }
        System.out.println();
        scan.close();
    }
}
cs



■ 실행결과






■ 소스 코드 핵심(교육센터 예시)

    ※ 지정 숫자 제외(noNumber), boolean을 사용하여 스위치 개념으로 관리


int noNumber[] = {  15342345,  
                    424352231,
                    11691941 };
 
boolean swit[] = new boolean[45];
int lottoNum[] = new int[30];
 
for(int i = 0;i < 45 ; i++)
{
    swit[i] = false;        // [0] ~ [44] = false
}
 
for(int i = 0;i < 15 ; i++)
{
    swit[noNumber[i]-1= true;        
}
 
int r, w;
= 0;
 
while(w < 30)
{
    r = (int)(Math.random() * 45);    // 0 ~ 44
    if(swit[r] == false)
    {
        swit[r] = true;
        lottoNum[w] = r + 1;        // 1 ~ 45
        w++;
    }
}
cs


'프로그래밍 언어 > Java(연습)' 카테고리의 다른 글

야구 게임  (0) 2016.04.27
sorting(정렬)  (0) 2016.04.27
cast(형변환)  (0) 2016.04.26
string2(진수 변환)  (0) 2016.04.25
string(문자열)  (0) 2016.04.25
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함