Study/Java

자바 Math.random() 사용하여 로또 번호를 입력 받아 맞춘 개수 출력

토기발 2022. 3. 17. 16:49

로또 번호를 입력 후 몇 개가 맞았는지 알려주는 프로그램을 만들겠습니다.

 

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import java.util.*;
 
public class TestRandom {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        int com[] = new int[6];
        int select[] = new int[6];
        
        //컴퓨터수 6개를 setting
        for(int i=0; i<com.length++i) {
            com[i] = (int)(Math.random()*45+ 1;
            for(int j=0; j<i; ++j) {
                if (com[i] == com[j]) {
                    i--;
                    break;
                }
            }
        }
        
        //사용자수 6개를 입력받자
        for(int i=0; i<select.length++i) {
            do {
                System.out.print(i+1+"번째 수를 입력 : ");
                select[i] = in.nextInt();
            }while(select[i]<1 || select[i]>45);
            for(int j=0; j<i; ++j) {
                if (select[i] == select[j]) {
                    i--;
                    break;
                }
            }
        }
        
        int co = 0;//같은수가 몇개인지 알려주는 변수
        for(int i=0; i<6++i) {
            for(int j=0; j<6++j) {
                if (com[i] == select[j]) {
                    co++;
                    break;
                }
            }
        }
        
        System.out.println(co+"개를 맞추셨습니다.");
    }
}    
 
 
 
 
 
 
 
 
 
cs

 

 

키보드로 번호를 입력받기 위해 Scanner를 사용합니다.

 

		int com[] = new int[6];
		int select[] = new int[6];

컴퓨터가 작성하는 로또 번호를 com 배열에, 사용자가 입력하는 로또 번호를 select에 저장합니다.

 

		for(int i=0; i<com.length; ++i) {
			com[i] = (int)(Math.random()*45) + 1;

Math.random()을 사용하여 컴퓨터가 1~45중 랜덤으로 번호 6개를 선택하게 합니다.

 

		for(int i=0; i<com.length; ++i) {
			com[i] = (int)(Math.random()*45) + 1;
			for(int j=0; j<i; ++j) {
				if (com[i] == com[j]) {
					i--;
					break;
				}
			}
		}

 

랜덤으로 나온 6개의 번호 중 중복값이 발생하지 않도록 합니다.

이제 컴퓨터의 로또 번호는 세팅되었습니다.

 

for(int i=0; i<select.length; ++i) {
			do {
				System.out.print(i+1+"번째 수를 입력 : ");
				select[i] = in.nextInt();
			}while(select[i]<1 || select[i]>45);
			for(int j=0; j<i; ++j) {
				if (select[i] == select[j]) {
					i--;
					break;
				}
			}
		}

 

사용자의 로또 번호는 Scanner로 입력받고 do {}while을 사용하여 음수와 46이상의 숫자는 입력받지 않도록 합니다.

do {}whilewhile과는 다르게 한 번은 실행되고 나서 조건을 확인합니다.

그리고 컴퓨터와 마찬가지로 중복 값이 발생하지 않도록 합니다.

 

int co = 0; 로 같은 수가 몇 개인지 알려주는 변수를 생성합니다.

 

		for(int i=0; i<6; ++i) {
			for(int j=0; j<6; ++j) {
				if (com[i] == select[j]) {
					co++;
					break;
				}
			}
		}

com[i]와 select[j]에 중복 값이 있는지 확인합니다.

중복 값이 발생할 경우 co의 숫자가 증가합니다.

 
System.out.println(co+"개를 맞추셨습니다.");

중복 값의 개수를 출력합니다.

 

잘 출력되었습니다.

저는 로또 하면 안 될 듯...

 


 

 

이전 게시글까지는 전체 코드를 Color Scripter로 올리고 설명할 때는 긁어서 복붙을 하다가

이번에 티스토리 코드블럭을 사용했는데 이쪽이 더 가독성이 좋을까요?

다음에는 설명할 때도 Color Scripter를 써볼까 싶네요. 

 

 

아직 배우는 중이라 설명에 오류가 있을 수 있습니다! 

혹시 오류를 발견하시거나 더 좋은 방법이 있다면 지적 부탁 드립니다~^^