자바 로또생성기 소스 좀 봐주세요!

조회수 1505회
package lotto;

import java.util.Random;

public class Lotto {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        //로또 배열을 받는다.
        Lotto lotto = new Lotto();
        int[] lottoArray = lotto.lottoNumGenerator();

        //로또 번호를 출력한다.
        System.out.println("==로또 번호==");
        for(int i=0;i<lottoArray.length;i++){
            System.out.print(lottoArray[i]+" ");
        }

    }


    int[] lottoNumGenerator(){

                //6개의 숫자 변수를 저장할 배열을 생성한다.
                int lottoNumbers[] = new int[6];

                //Random을 활용하여 1~45의 난수 생성, 배열에 저장한다.
                Random random = new Random();

                for(int i =0;i<lottoNumbers.length;i++){
                    lottoNumbers[i]=random.nextInt(45)+1;
                }

                //배열 안 난수의 중복 체크, 값을 재설정한다.
                boolean duplication = true;

                for(int i =0;i<lottoNumbers.length;i++){
                    for(int j=0;j<lottoNumbers.length;j++){
                        if(i!=j&&lottoNumbers[i]==lottoNumbers[j]){
                            duplication=true;
                            lottoNumbers[i]=random.nextInt(45)+1;
                            break;
                        }else{
                            duplication=false;
                        }
                    }
                    //중복안되는 수로 변할때까지 무한 재설정되도록 i--
                    if(duplication){
                        i--;
                    }
                }


                return lottoNumbers;
    }

}
  1. 랜덤함수를 이용하여 작성을 하며 6자리의 랜덤번호를 출력 하며 같은번호가 2번이상 나올수가 없음
  2. 객체지향적으로 만들것 (메소드화를 시켜 세분화)
  3. 배열, List, Map을 최대한 활용할것

이렇게 조건이 있는데요. 1번은 해결된거같은데, 나머지 2,3번을 할려면 어디에 뭘 추가해야 할까요

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 저라면 1~45 까지 배열을 하나 만든 다음, 그것을 랜덤으로 섞는 정렬을 하고 앞에 6개를 가저 올거 같습니다. 이도근 2018.8.7 17:44

1 답변

  • LottoPool이라는 클래스를 다음과 같이 만들면 어떨까요?

    멤버 변수: public으로 pickedNumber라는 리스트를 만든다.

    메소드

    • reset: List에 1부터 45까지 넣어서 공들을 준비하고, pickedNumber를 clear한다
    • pickNumber: List에서 값을 랜덤하게 하나 빼서 pickedNumber에 넣는다. 그리고 그 값을 리턴. 6개의 숫자가 꽉 찾다면 그에 따른 에러 처리

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)