로또 번호 추출 프로그램

smkim·2021년 10월 31일
0

[로또 번호 추출 프로그램]
1. 1~45 숫자 중에서 무작위로 6개의 수를 추출한다.
2. 6개의 숫자를 추출하되, 중복되는 수가 있으면 안된다.
3. 무작위(랜덤)+중복제거된 6개의 숫자를 추출하여 사용자에게 보여준다.

코드 수정 전

public class lottoRepeat {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int lottoNumber[]=new int[7]; 
		
		for(int i=0;i<45;i++) {
			// for문 돌리고 배열에 숫자 저장(45개) 
			lottoNumber[i]=(int)(Math.random()*45)+1;
		}
		
		// 중복숫자 제거 
			for(int j=0;j<45;j++) {
				if(lottoNumber[i]==lottoNumber[j]) {
					
				}
	
		// 사용자에게 6개 숫자 노출 
		System.out.println(lotto[i]);
			}
	}

}

코드 수정 후

public class RandomRottoNumber {

	public static void main(String[] args) {
		// 랜덤 로또번호 추첨 프로그램 
		// 1~45까지의 번호가 있으며 랜덤으로 6개의 번호를 추출한다(같은 번호 중복X) 

		// 로또 번호를 저장할 lottoNumber 배열 생성 
		int[] lottoNumber=new int[7];


		// 45개의 숫자 중에서 랜덤으로 6개의 숫자 추출 
		for(int i=0;i<6;i++) {
			lottoNumber[i]=(int)(Math.random()*45)+1;

			// 중복 번호 제거 
			for(int j=0;j<i;j++) {
				if(lottoNumber[i]==lottoNumber[j]) {
					i--;
					break;
				}
			}
		}
		System.out.println("로또 번호:");

		// 6개 숫자 사용자에게 노출 
		for(int i=0;i<6;i++) {
			System.out.println(lottoNumber[i]+"");
		}

	}

}

고쳐야할 점

  1. 배열 선언 시 왜 크기 할당을 해주지 않았나?
  2. for문을 먼저 돌리고 나서 배열 안에 랜덤으로 추출된 숫자를 저장하는 것이다. i가 인덱스 번호이므로 i만큼 돌려서 그 수를 저장한다.
  3. random() 함수에서 +1을 해주는 이유도 몰랐다. +1을 해주지 않으면 내가 곱해준 숫자에서 '미만'의 수에서 랜덤으로 값이 추출되는 것이기 때문에 +1을 꼭 해주어야 그 숫자의 이하의 범위에서 값이 랜덤으로 추출되는 것이다.
  4. 전반적으로 접근법은 크게 틀리지 않은 것 같으나 자잘한 부분에서 오류가 많았던 것 같다. 앞으로 유의하자
profile
컴퓨터공학과 학생 brandy 입니다. 개발+기획에 관심이 있지만, 개발 실력이 뛰어나진 않지만 성장하고자 하기 위해 벨로그를 작성합니다.

0개의 댓글