Language/JAVA

(JAVA)로또

doheun 2023. 1. 17. 17:49
반응형

로또

1에서 45까지의 수 중에서 6개를 랜덤으로 중복없이 뽑아서 배열에 담는 프로그램

public void Lotto() {
        //크기 6의 배열객체 생성
        int [] lots=new int[6];
        for(int i=0;i<lots.length;i++) {
            //1~45의 숫자 랜덤으로 뽑아서 배열에 초기화
            lots[i]=(int)(Math.random()*45)+1;
            //뽑은 숫자가 이전의 배열요소에 포함되어있는지 확인
            for(int j=0;j<i;j++) {
                //중복이면
                if(lots[i]==lots[j]) {
                    //새로뽑은 인덱스 전으로 돌아가서 다시뽑기
                    i--;
                }
            }

        }
        Arrays.sort(lots);
        System.out.println(Arrays.toString(lots));
    }
    //[7, 11, 17, 20, 32, 35]

하나의 메소드를 만들어서 랜덤하게 뽑아서 중복제거하고 배열에 담을 수 있지만

  1. 1~45사이의 숫자를 랜덤하게 생성해주는 메서드
  2. 배열에 6개의 랜덤한 숫자를 담는 메서드
  3. 중복이 존재하는지 확인하기 위한 메서드
    이렇게 3개로 나누어서 코드를 작성해보려고 한다.

코드

//1.1~45사이의 숫자를 랜덤하게 생성해주는 메서드
public int makeBall() {
        int num=(int)(Math.random()*45)+1;
        return num;
    }

//2.배열에 6개의 랜덤한 숫자를 담는 메서드
public void makelotto() {
        //6개 랜덤으로 배열에 넣기
        for(int i=0;i<lots.length;i++) {
            lots[i]=makeBall();
            int cnt=0;
            //확인하면서 중복이 있는지
            while(true) {
                int num=makeBall();
                if(!check(lots,num)) {
                    lots[cnt++]=num;
                }
                if(lots.length==cnt) {
                    break;
                }
            }
        }
    }

//3.중복이 존재하는지 확인하기 위한 메서드  
public boolean check(int [] arr,int num) {
        boolean isS=false;
        for(int i=0;i<arr.length;i++) {
            //현재까지 만들어진 lots의 배열을 전달받아서 for문돌면서
            //새로 뽑은 값과 같으면 true
            if(arr[i]==num) {
                isS=true;
                break;
            }
        //아니면 false
        }
        return isS;
    }
//결과
public class LottoTest {
    public static void main(String[] args) {
        LottoOne lotto=new LottoOne();
        System.out.println(Arrays.toString(lotto.lots));
    }
}
//[7, 15, 17, 23, 34, 39]
반응형

'Language > JAVA' 카테고리의 다른 글

(JAVA)상속-super, this  (0) 2023.01.19
(JAVA)객체 지향 프로그래밍(OOP)  (0) 2023.01.18
(JAVA)배열  (0) 2023.01.16
(JAVA)String 메서드(문자열 자르기)  (0) 2023.01.13
(JAVA)String 비교  (0) 2023.01.13