IT공부/JAVA

[JAVA] 배열을 이용하여 로또 생성 (중복 제거, 정렬)

재삐 2023. 12. 23. 15:08
반응형

[그림. 결과화면]

- 로또 생성기 목차 -

1. 6번 생성 해야하니 배열을 이용하여 공간을 만듬

2. 1 ~ 45 랜덤 수 생성해서 각 공간에 넣어줌

3. 중복 제거

4. 정렬

5. 출력

6. 구현영상

7. 전체코드

 

 

 

1. 배열을 이용하여 번호를 넣을 6개의 방을 만듬

 

 

2. 랜덤 수를 생성해서 for문을 이용하여 각 배열값에 할당

 

 

3. 중복 제거

랜덤값이 들어오면 이전에 생성 된 값들과 비교하여

중복이 되어있으면 다시 랜덤 생성

 

4. 정렬

temp를 이용

a = 10, b = 20을 a = 20, b = 10으로 위치 바꾸는 것을 활용하여

if 문을 사용하여 값이 낮은 순으로 정렬

 

5. 할당 된 크기 6개의 방을 출력

 

6. 구현 영상

(소리주의)

 

7. 전체 코드 File : Lotto.java

import java.util.Random;
import java.util.Scanner;

/*
    로또 생성기 (1 ~ 45) 중 6개 출력
    중복을 피해야함
 */

public class Lotto {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("로또 구매하실 매수 입력 : ");
        int cnt = scanner.nextInt();

        System.out.println("----------------------");
        for (int i = 0; i < cnt; i++) {
            createLotto();
        }
        System.out.println("----------------------");
    }

    public static void createLotto() {

        Random random = new Random();

        int[] lotto = new int[6]; // 1차원 배열 크기 6개
        for (int i = 0; i < lotto.length; i++) {
            lotto[i] = random.nextInt(45) + 1; // 1~45 랜덤 생성
            // 중복 제거
            for (int j = 0; j < i; j++) {
                if (lotto[i] == lotto[j]) {
                    // System.out.println("중복된 수 " + lotto[i]);
                    i--;
                }

                // 낮은 순으로 정렬
                if (lotto[i] < lotto[j]) {
                    int temp = lotto[i];
                    lotto[i] = lotto[j];
                    lotto[j] = temp;
                }

            }

        }

        // 출력
        for (int i = 0; i < lotto.length; i++) {
            System.out.printf("%2d ", lotto[i]);
        }
        System.out.println();
    }
}
반응형