백엔드/Java

Java로 로또 번호 생성기 만들기(1)

짱뚱짱 2024. 9. 29. 09:00

당첨 번호와 사용자의 로또 번호를 각각 생성하고, 일치하는 번호에 따라 등수를 확인하는 프로그램.

 

public static void ranNum(int[] arr, int cnt) {
    for (int i = 0; i < cnt; i++) {
        int randomNum = 0;
        do {
            randomNum = (int)(Math.random() * 45) + 1; // 1부터 45까지의 랜덤 숫자
        } while (isNum(arr, randomNum, i));
        arr[i] = randomNum;
    }
}

랜덤 번호 생성 메서드 => 주어진 배열에 중복되지 않는 랜덤 번호를 생성하여 저장.

 

public static boolean isNum(int[] arr, int num, int len) {
    for (int i = 0; i < len; i++) {
        if (arr[i] == num) {
            return true; 
        }
    }
    return false;
}

중복 체크 메서드 => 배열에 특정 숫자가 존재하는지 확인

 

public static void print(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
        if (i == arr.length - 1 && arr.length == 7) {
            System.out.print("[" + arr[i] + "]"); 
        } else {
            System.out.print(arr[i]);
            if (i < arr.length - 1) {
                System.out.print(" "); 
            }
        }
    }
    System.out.println(); 
}

번호 출력 메서드 => 배열의 값 출력. 당첨번호의 마지막 번호(보너스)는 대괄호로 감싸서 표시

 

public static int checkRank(int[] user, int[] lotto) {
    int matchCount = 0;

    for (int i = 0; i < user.length; i++) {
        if (isNum(lotto, user[i], lotto.length - 1)) { 
            matchCount++;
        }
    }

    boolean bonus = isNum(lotto, user[user.length - 1], lotto.length); 

    if (matchCount == 6) {
        return 1; // 1등
    } else if (matchCount == 5 && bonus) {
        return 2; // 2등
    } else if (matchCount == 5) {
        return 3; // 3등
    } else if (matchCount == 4) {
        return 4; // 4등
    } else if (matchCount == 3) {
        return 5; // 5등
    } else {
        return 0; // 꽝
    }
}

등수 확인 메서드 => 사용자 번호와 당첨 번호를 비교, 일치하는 개수에 따라 등수를 리턴

 

public static void main(String[] args) {
    int lotto[] = new int[7]; // 당첨번호
    int user[] = new int[6];  // 사용자 로또 번호    

    // 당첨 번호 및 사용자 번호 생성
    ranNum(lotto, 7);
    ranNum(user, 6);
    
    // 출력
    System.out.print("당첨번호: ");
    print(lotto);
    System.out.print("사용자 번호: ");
    print(user);
    
    // 등수 확인
    int rank = checkRank(user, lotto);
    System.out.println(rank == 0 ? "꽝" : ("당첨 등수: " + rank + "등"));
}

메인 메서드 => 위에서 만든 메서드를 호출하여 로또 번호를 생성, 출력, 등수를 확인

 

 

결과

당첨번호: 3 15 23 34 42 7 [8]
사용자 번호: 3 15 22 34 9 1
당첨 등수: 3등

 

'백엔드 > Java' 카테고리의 다른 글

Java 클래스(Class) (2)  (1) 2024.09.30
Java 클래스(Class) (1)  (0) 2024.09.29
Java로 계산기 만들기  (1) 2024.09.28
Java 메서드 (Method)  (1) 2024.09.26
Java 배열, 문자열 처리  (2) 2024.09.26