로또 구조

moon.kick·2025년 2월 19일

초보자라면, 프로그램을 더 간단하고 구조적으로 잘 나누는 것이 좋습니다. 아래는 당신의 코드 구조를 간결하게 폴더 트리 형식으로 바꾼 예시입니다.

프로젝트 구조:

LottoApp/
├── src/
│   ├── LottoArray.java
│   ├── LottoUtil.java
└── README.md

1. LottoArray.java: 메인 클래스 파일입니다.

package lotto;

public class LottoArray {

    public static void main(String[] args) {
        // 로또 번호 배열 생성
        int[] lotto = LottoUtil.createLottoNo();

        // 로또 번호 정렬
        LottoUtil.sortLottoNumbers(lotto);

        // 로또 번호 출력
        LottoUtil.printLottoNumbers(lotto);
    }
}

2. LottoUtil.java: 로또 관련 기능을 제공하는 유틸리티 클래스입니다.

package lotto;

import java.util.Arrays;
import java.util.Random;

public class LottoUtil {

    // 로또 번호 생성 메서드
    public static int[] createLottoNo() {
        int[] lotto = new int[6];
        int cnt = 0;
        Random rand = new Random();

        // 6개의 번호를 생성하는 반복문
        while (cnt < 6) {
            int lottoNo = rand.nextInt(45) + 1;  // 1부터 45까지의 난수 생성
            // 중복 체크
            if (isCompareNo(lotto, lottoNo)) {
                lotto[cnt] = lottoNo;
                cnt++;
            }
        }
        return lotto;
    }

    // 중복 체크 메서드
    public static boolean isCompareNo(int[] lotto, int lottoNo) {
        for (int i = 0; i < lotto.length; i++) {
            if (lotto[i] == lottoNo) {
                return false;  // 중복된 번호가 있으면 false 반환
            }
        }
        return true;  // 중복된 번호가 없으면 true 반환
    }

    // 로또 번호 정렬 메서드
    public static void sortLottoNumbers(int[] lotto) {
        Arrays.sort(lotto);  // 기본 정렬 메서드를 사용하여 오름차순 정렬
    }

    // 로또 번호 출력 메서드
    public static void printLottoNumbers(int[] lotto) {
        System.out.print("로또 번호: ");
        for (int i = 0; i < lotto.length; i++) {
            System.out.print(lotto[i] + " ");
        }
        System.out.println();  // 출력 후 줄 바꿈
    }
}

설명:

  1. LottoArray.java: 메인 클래스는 단지 LottoUtil 클래스의 메서드들을 호출하는 역할만 합니다.
  2. LottoUtil.java: 로또 번호 생성, 중복 체크, 정렬, 출력 메서드를 모두 LottoUtil 클래스에 넣어주어 코드가 깔끔하고 모듈화되었습니다.

폴더 구조:

  • src/: 이 폴더 안에 두 개의 자바 파일(LottoArray.java, LottoUtil.java)이 있습니다.
  • README.md: 프로젝트에 대한 간단한 설명 파일 (선택 사항)

전체 코드

package ex0219;

import java.util.Arrays;
import java.util.Random;

public class LottoArray {

    public static void main(String[] args) {
        // 로또 번호 배열 생성
        int[] lotto = new int[6];
        // 중복되지 않는 번호가 들어갈 개수
        int cnt = 0;

        // 로또 번호 생성
        createLottoNo(lotto, cnt);
        
        // 로또 번호 정렬
        sortLottoNumbers(lotto);

        // 로또 번호 출력
        printLottoNumbers(lotto);
    }

    // 로또 번호 생성 메서드
    public static void createLottoNo(int[] lotto, int cnt) {
        Random rand = new Random();
        
        // 6개의 번호를 생성하는 반복문
        while (cnt < 6) {
            int lottoNo = rand.nextInt(45) + 1;  // 1부터 45까지의 난수 생성
            // 중복 체크
            if (isCompareNo(lotto, lottoNo)) {
                lotto[cnt] = lottoNo;
                cnt++;
            }
        }
    }

    // 중복 체크 메서드
    public static boolean isCompareNo(int[] lotto, int lottoNo) {
        // 배열을 돌면서 중복된 번호가 있는지 확인
        for (int i = 0; i < lotto.length; i++) {
            if (lotto[i] == lottoNo) {
                return false;  // 중복된 번호가 있으면 false 반환
            }
        }
        return true;  // 중복된 번호가 없으면 true 반환
    }

    // 로또 번호 정렬 메서드
    public static void sortLottoNumbers(int[] lotto) {
        Arrays.sort(lotto);  // 기본 정렬 메서드를 사용하여 오름차순 정렬
    }

    // 로또 번호 출력 메서드
    public static void printLottoNumbers(int[] lotto) {
        System.out.print("로또 번호: ");
        for (int i = 0; i < lotto.length; i++) {
            System.out.print(lotto[i] + " ");
        }
        System.out.println();  // 출력 후 줄 바꿈
    }
}
profile
@mgkick

0개의 댓글