세로형
Recent Posts
Recent Comments
Link
04-18 12:09
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

꿈 많은 사람의 이야기

자바 로또(lotto) 만들어 보기(배열, Hash) 본문

java

자바 로또(lotto) 만들어 보기(배열, Hash)

이수진의 블로그 2017. 8. 18. 08:46

자바로 간단한 로또 프로그램을 만든다.

난수로 6개의 배열에 값을 저장하고 중복을 체크도 한다.
(이 부분은 값을 적게해서 비교를 빠르게 해보는 예제이다. 실제로 해보려면 로또 숫자만큼 6을 변경해주면 된다 45인가..?)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public void start()
{
    int[] lotto = new int[6];
    boolean check = false;
    int cnt = 0;
    Random rand = new Random();
    while(cnt < 6)
    {
        int num = 1 + rand.nextInt(6);
        //1부터 45까지의 랜덤한 값
            
        check = false;        
        for(int i = 0 ; i < cnt ; i++)
        {
            if(lotto[i] == num)
            {
                check = true;
                break;
            }
        }
        if(!check)
        {
            lotto[cnt] = num;
            cnt++;
        }
            
    }
        
    for(int i = 0 ; i < lotto.length ; i++)
    {
        System.out.print(lotto[i]+"\t");
    }
}
    
 
Colored by Color Scripter

위는 로또 번호를 생성하는 방법이다. 6개의 배열을 만들어서 반복문을 돈다. 카운트가 6이 될때 까지 도는데 1번씩 돌때마다 난수를 생성한다.

난수가 생성되서 값을 넣기 전에 중복을 체크하고 넣는다.

이렇게 하는 방법도 있고 컬렉션 프레임워크 HashSet을 이용해서도 된다.
Set은 중복되는 값이 없기 때문에 이런식의 프로그램을 구현할 때 매우 유용하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void start6()  //Set을 이용해서 
{
    HashSet<Integer> lotto = new HashSet<>();
    while(lotto.size() < 6)
    {
        lotto.add((int)(Math.random()*6+ 1);
    }
        
    Iterator<Integer> it = lotto.iterator();
    while(it.hasNext())
    {
        System.out.println(it.next());
    }
}
 
Colored by Color Scripter

이런식으로 하면 로또 번호가 생성된다.

나머진 사용자가 입력하고 비교만 하면 된다(Scanner로 입력 받고 사용자 로또 6개 입력 받고 같은 값이 있으면 카운트가 증가되는 방식으로)



반응형
그리드형
Comments