JX405기_비트/Java

Day02-7 Random 클래스를 활용한 Lotto번호 출력 (배열 없이)

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

배열, 중복 없이 오름차순으로 정렬된 로또번호 출력

package day0110;
// 로또번호 추첨기
// ver 1.0
// 배열 없이 만들어보자
// 1. 정렬되어야 함.
// 2. 중복 없어야 함.

import java.util.Random;

public class Ex08Lotto01 {
    public static void main(String[] args) {
        Random random = new Random();
        int num1, num2, num3, num4, num5, num6;

        // 1. 첫번째 숫자 결정하기
        num1 = random.nextInt(45) + 1;
        // 2. 두번째 숫자 결정하기
        int temp = random.nextInt(45) + 1;
        while(num1 == temp){
            temp = random.nextInt(45) + 1;
        }
        if(num1 < temp){
            num2 = temp;
        } else {
            num2 = num1;
            num1 = temp;
        }
        // 3. 세번째 숫자 결정하기
        temp = random.nextInt(45) + 1;
        while(num1 == temp || num2 == temp){
            temp = random.nextInt(45) + 1;
        }
        if(num2 < temp){
            num3 = temp;
        } else if(num1 < temp){
            num3 = num2;
            num2 = temp;
        } else {
            num3 = num2;
            num2 = num1;
            num1 = temp;
        }

        // 4. 네번째 숫자 결정하기
        temp = random.nextInt(45) + 1;
        while(num1 == temp || num2 == temp || num3 == temp){
            temp = random.nextInt(45) + 1;
        }
        if(num3 < temp){
            num4 = temp;
        } else if(num2 < temp){
            num4 = num3;
            num3 = temp;
        } else if(num1 < temp){
            num4 = num3;
            num3 = num2;
            num2 = temp;
        } else {
            num4 = num3;
            num3 = num2;
            num2 = num1;
            num1 = temp;
        }

        // 5. 다섯번째 숫자 결정하기
        temp = random.nextInt(45) + 1;
        while(num1 == temp || num2 == temp || num3 == temp || num4 == temp){
            temp = random.nextInt(45) + 1;
        }
        if(num4 < temp){
            num5 = temp;
        } else if(num3 < temp){
            num5 = num4;
            num4 = temp;
        } else if(num2 < temp){
            num5 = num4;
            num4 = num3;
            num3 = temp;
        } else if(num1 < temp){
            num5 = num4;
            num4 = num3;
            num3 = num2;
            num2 = temp;
        } else {
            num5 = num4;
            num4 = num3;
            num3 = num2;
            num2 = num1;
            num1 = temp;
        }
        // 6. 여섯번째 숫자 결정하기
        temp = random.nextInt(45) + 1;
        while(num1 == temp || num2 == temp || num3 == temp  || num4 == temp  || num5 == temp){
            temp = random.nextInt(45) + 1;
        }

        if(num5 < temp){
            num6 = temp;
        }else if(num4 < temp){
            num6 = num5;
            num5 = temp;
        } else if(num3 < temp){
            num6 = num5;
            num5 = num4;
            num4 = temp;
        } else if(num2 < temp){
            num6 = num5;
            num5 = num4;
            num4 = num3;
            num3 = temp;
        } else if(num1 < temp){
            num6 = num5;
            num5 = num4;
            num4 = num3;
            num3 = num2;
            num2 = temp;
        } else {
            num6 = num5;
            num5 = num4;
            num4 = num3;
            num3 = num2;
            num2 = num1;
            num1 = temp;
        }

        System.out.printf("%d, %d, %d, %d, %d, %d\n", num1, num2, num3, num4, num5, num6);
    }
}















 

불편 사항 :

정렬할 때마다 모든 이전 숫자들과 대소비교 실행

모든 이전 숫자들과 번호가 같은지 확인해야함

 

반복되는 구문

// 6. 여섯번째 숫자 결정하기
temp = random.nextInt(45) + 1;
while(num1 == temp || num2 == temp || num3 == temp  || num4 == temp  || num5 == temp){
    temp = random.nextInt(45) + 1;
}

if(num5 < temp){
    num6 = temp;
}else if(num4 < temp){
    num6 = num5;
    num5 = temp;
} else if(num3 < temp){
    num6 = num5;
    num5 = num4;
    num4 = temp;
} else if(num2 < temp){
    num6 = num5;
    num5 = num4;
    num4 = num3;
    num3 = temp;
} else if(num1 < temp){
    num6 = num5;
    num5 = num4;
    num4 = num3;
    num3 = num2;
    num2 = temp;
} else {
    num6 = num5;
    num5 = num4;
    num4 = num3;
    num3 = num2;
    num2 = num1;
    num1 = temp;
}