자바로 로또 프로그램을 만들어 보려고 하는데.... 중복된 배열값을 체크해서 파일로 출력하려고 합니다.


  ▼ 프로그램의 진행은 로또 번호를 몇 개 뽑아낼 것인지 묻습니다. 그러면 입력한 숫자 만큼 번호를 추출하게 됩니다. for 문을 이용해서 List 객체에 번호들을 모두 추가합니다. 추가후 Collections.shuffle() 함수의 인수로 넘기게 되면 자동으로 섞어줍니다. 그럼 리스트 안에는 섞은 값이 차례대로 추가 되어 있을 겁니다. 이것을 하나씩 꺼내면 되겠죠. 이렇게 꺼낸 값을 숫자의 숫서대로 정렬하기 위해 Array.sort() 함수를 이용했습니다.

그런데 이소스를 이렇게 수정해 보고 싶어졌습니다. 입력값으로 광장히 큰 값 예를 들어 200만개 그런다음 그중에 중복된 값들도 존재 할터인데 사용자가 그 중복된 번호 파일로 출력할 수 있도록 하고 싶습니다. 예를 들어 20회를 입력하면 추출된 번호들중 중복이 일어난 번호들중 20회 이하로 일어난 번호들을 파일로 출력해 주는 그런 프로그램으로 수정하고 싶은데 더이상 할 수가 없네요

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
 
public class Lotto {
 
    public static void main(String[] args) {
 
        Lotto lotto = new Lotto();
        Scanner sc = new Scanner(System.in);
 
        System.out.print("로또번호 추출 개수 입력: ");
        int gameCnt = sc.nextInt();
 
        for (int i = 1; i <= gameCnt; i++) {
            System.out.println(
                    i + "번째 로또번호: " + lotto.lottoNumbers());
        }
    }
 
    String lottoNumbers() {
 
        List<Integer> lottoNum = new ArrayList<Integer>();
         
        // List 안에 로또번호 추가
        for (int i = 1; i <= 45; i++) {
            lottoNum.add(i);
        }
 
        // set안의 수를 무작위로 섞는다
        Collections.shuffle(lottoNum);
 
        int[] lottoNums = new int[6];
        for (int i = 0; i < 6; i++) {
            lottoNums[i] = lottoNum.get(i);
        }
         
        // 정렬
        Arrays.sort(lottoNums);
 
        return Arrays.toString(lottoNums);
    }
}

 

  

  • 2018년 01월 09일에 수정됨
    Software Developer
  • 2018년 01월 08일에 작성됨

  • 코드블럭 추가가 무슨 소리에요??? ㅠ.ㅠ    김강호   2018.1.9 23:28     
조회수 75


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close