JAVA(폐쇄)/문제풀이

array - 로또 번호 만들기

진사담 2023. 2. 21. 00:17
728x90
반응형

안녕하세요

이번엔 로또 번호 생성기가 숙제입니다.

오늘 array부분을 배우고 문제 풀다 로또생성기 부분에서 시간이 다되어 

로또번호 생성기가 숙제가 되었습니다.

 

아래는 제가 처음 풀었던 방식입니다.

int[] lotto = new int[6];
		
		df:for(int i = 1; i < lotto.length;) {
			
			lotto[i] = new Random().nextInt(45)+1;
			
			for(int j= 0; j <i ; j++) {
				if(lotto[i] == lotto[j]) {
					continue df;
			}
			
		}
			System.out.print(lotto[i] + " ");
			i++;
		}
	}

위 코드 방식과 하면 

로또 번호가 5개 밖에 안나옵니다.

 

그래서 뭐가 문제인가

계속 고민하고 수소문 해보니..

 

array 구간의 선언 하는 법은

 

배열선언

자료형[ ] 배열명; -> int [ ] ar;

배열 생성

배열명 = new 자료형[개수(길이)]; -> ar = new int[4];

 

이렇게 되며

 

int[4];는 

 

0에서 부터 시작해서 3까지 총 4개의 방을 만드는 식입니다.

 

그래서 위의 실수는

 

for (int i=1;)로 인해 1부터 6까지의 방을 만드는데

for(int j= 0; j <i ; j++) {
으로 j<i는 6<6

6<6은 거짓이라 5개만 나오는것입니다.

 

 

그리하여 수정한 코드는

int[] lotto = new int[6];
		
		df:for(int i = 0; i < lotto.length;) {
			
			lotto[i] = new Random().nextInt(45)+1;
			
			for(int j= 0; j <i ; j++) {
				if(lotto[i] == lotto[j]) {
					continue df;
			}
			
		}
			System.out.print(lotto[i] + " ");
			i++;
		}
	}
    
    
    array 선언 방법을 다시 깨닫고 바꾼부분은
    for(int i = 0; i < lotto.length;)의 int i = 0;으로 
    방이 0부터 5까지
    5는 6보다 작으니 참으로 
    0, 1, 2, 3, 4, 5 총 6개의 방으로 숫자가 겹치지 않게 나오는 
    코드가 만들어지는것입니다.

자바의

이런 문법들은 

영어의 abcd같은 아주 아주 기초적이라고 하는데

큰일입니다...

 

 

728x90
반응형