JX405기_비트/Java

Day02-8 Lotto 번호 생성기 (배열 사용)

_하루살이_ 2023. 1. 15. 12:14

6가지의 숫자를 가지는 1차원 배열을 사용해서 

1. 중복되지 않은 숫자를 배열에 삽입하기

// 중복되지 않는 숫자를 배열에 부여하기
for(int i = 0; i < lottoNumbers.length;){
    int temp = random.nextInt(45) + 1; // 새로운 temp라는 변수에 랜덤한 숫자를 할당
    boolean numberSwitch = true; // 새로운 변수가 배열의 값과 일치여부 판단
    for(int j = 0; j < i; j++){ // 이중 for문 사용
        if(temp == lottoNumbers[j]){ // temp 변수의 값이 배열의 값과 일치
            numberSwitch = false; // numberSwitch를 false로 변경 배열에 temp값 추가되지 않고 다시 i까지 실행
        }
    }
    
    //numberSwitch가 false 일 경우 다시 temp값 받기 i값 증가되지 않음
    

    if(numberSwitch){ // true 일 경우 temp 값을 i번째 인덱스에 삽입 후 i값을 증가
        lottoNumbers[i] = temp;
        i++;
    }
}

 

 

2. 대소비교를 통해 오름차순으로 정렬하기

// 배열을 사용해서 오름 차순으로 정렬하기
for(int i = 0; i < lottoNumbers.length - 1; i++){
    if(lottoNumbers[i] > lottoNumbers[i+1]){ 
        int temp = lottoNumbers[i];
        lottoNumbers[i] = lottoNumbers[i+1];
        lottoNumbers[i+1] = temp;
        i = -1;
    }
}

 

 

전체 코드

package day0110;

import java.util.Random;

// 로또 번호 생성기
// ver2.0
// 배열을 사용해보자
public class Ex09Lotto02 {
    public static void main(String[] args) {
        Random random = new Random();
        int[] lottoNumbers = new int[6];
        // 중복되지 않는 숫자를 배열에 부여하기
        for(int i = 0; i < lottoNumbers.length;){
            int temp = random.nextInt(45) + 1;
            boolean numberSwitch = true;
            for(int j = 0; j < i; j++){
                if(temp == lottoNumbers[j]){
                    numberSwitch = false;
                }
            }

            if(numberSwitch){
                lottoNumbers[i] = temp;
                i++;
            }
        }
        
        // 배열을 사용해서 오름 차순으로 정렬하기
        for(int i = 0; i < lottoNumbers.length - 1; i++){
            if(lottoNumbers[i] > lottoNumbers[i+1]){
                int temp = lottoNumbers[i];
                lottoNumbers[i] = lottoNumbers[i+1];
                lottoNumbers[i+1] = temp;
                i = -1;
            }
        }
        
        // 출력
        for(int i = 0; i < lottoNumbers.length; i++){
            System.out.printf("%d", lottoNumbers[i]);
            if(i < lottoNumbers.length - 1){
                System.out.print(", ");
            } else {
                System.out.println();
            }
        }
    }
}