Java/예제

[23.06.01] JAVA 수행 미션_LottoGenerator

아캔두우잇 2023. 6. 1. 16:44
반응형
package j20230601;

public class LottoGenerater {

	public static int generateNumber() {
		return (int) (Math.random() * 45) + 1;
		// math는 내장함수, 랜덤함수는 0~1까지의 숫자로 나옴.
		// 가장 큰 값은 0.9999999999 ... 45곱하면 44.~~~ 
		// int 정수형으로 나오고 44까지 나오면 더하기 1 해서 max 45까지
	}
	
	public static void main(String[] args) {
		
		int [] lottoNumber = new int[6];
		
		try {
		// i 가 로또넘버 길이보다 작을 때 로또0번부터 5번까지 값 넣기
		for(int i=0; i < lottoNumber.length; i++) {
			lottoNumber[i] = generateNumber();
			System.out.println( (i+1) + "번 행운의 숫자 : " +lottoNumber[i]); 
			// 중복된 값 처리
            for (int j=0; j<i; j++) {
            	// i번 보다 앞선 숫자들과 비교(j<i)했을 때 중복된 숫자가 있으면 
                if (lottoNumber[i] == lottoNumber[j]) { 
                	// i++된 값에 i-- 해서 해당 i번째 숫자 다시 추출
                	System.out.println("↑ 중복 숫자 <"+lottoNumber[i]+ "> 발생으로 다시 값을 추출합니다."); 
                    i--;}
                }
            }
		
		System.out.println("-----------------------------------------");
		
		// for-each 문 p135
		// n 객체에 배열 값들 차례로 출력할 때 쓴다. 
		// 배열 값의 타입에 맞게 개체 타입 정한다. int, String 등
		for(int n: lottoNumber)
			System.out.printf("%d ",n);
		} catch(ArrayIndexOutOfBoundsException e) {
			System.out.println("오류코드 : "+e);
		}
		finally {
			System.out.println(); // 엔터 효과
			System.out.println("福 금주에 이 번호가 행운을 가져다 드릴겁니다 :) 福");
		}
	}
}

1번 행운의 숫자 : 32

2번 행운의 숫자 : 9

3번 행운의 숫자 : 5

4번 행운의 숫자 : 33

5번 행운의 숫자 : 18

6번 행운의 숫자 : 9

↑ 중복 숫자 <9> 발생으로 다시 값을 추출합니다.

6번 행운의 숫자 : 17

-----------------------------------------

32 9 5 33 18 17

福 금주에 이 번호가 행운을 가져다 드릴겁니다 :) 福

 

반응형