본문 바로가기
JAVA(폐쇄)/문제풀이

array - 로또 번호 만들기

by 진사담 2023. 2. 21.
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
반응형

'JAVA(폐쇄) > 문제풀이' 카테고리의 다른 글

백준(BACKJOON) 18108 문제풀이 JAVA  (0) 2023.03.01
JAVA - Method 문 총합을 구하는 함수를 만들자  (0) 2023.02.23
사칙연산  (0) 2023.02.15
입출력과 사칙연산  (0) 2023.02.15
1/30 array 문제풀이(응용)  (0) 2023.01.31