오늘은 로또 프로그램을 만드는 실습을
해보겠습니다.
함수를 사용해서 만들건데
6개 번호를 로또 번호로 설정하고
사용자에게 6개의 번호를 입력받아서
결과에 따라서 당첨 여부를 출력해주는 프로그램입니다.
이때 로또 번호는 중복을 제거하려고 합니다.
코드를 살펴볼까요?
먼저 로또번호를 설정해야겠습니다.
public static int[] getLotto() {
Random r = new Random();
int arr[] = new int[6];
a : while(true) {
for(int i = 0; i < arr.length; i ++) {
arr[i] = r.nextInt(45) + 1;
}
먼저 랜덤한 번호 6개를 배열에 넣습니다.
Arrays.sort(arr);
중복을 확인하기 위해 배열을 정렬했습니다.
for(int i = 0; i < arr.length-1; i ++) {
if ((compare_equal(arr[i], arr[i+1]) == 0)) {
continue a;
}
break a;}}
return arr;}
이떄 compare_equal이라는 함수를 써서 이 값이 0이면
다시 번호를 생성하고
아니면 반복문을 실행후 while루프를 종료합니다.
public static int compare_equal(int a, int b) {
if(a == b) {
return 0;}
return 1;}
위에서 사용한 compare_equal함수입니다.
두 수가 같으면 0을 리턴
아니면 1을 리턴합니다.
public static int[] getUserNum() {
int user[] = new int[6];
Scanner sc = new Scanner(System.in);
a :for(int i = 0; i < 6; i++) {
System.out.printf("%d번째 로또 번호를 입력하세요 : ", i + 1);
int n = sc.nextInt();
if(n <= 45 && n >= 1) {
user[i] = n;
}
else {
System.out.println("로또 숫자의 범위를 벗어났습니다. ");
getUserNum();
}}
return user;}
다음은
사용자에게 로또 숫자 6개를 입력받고 리턴합니다.
이때 1~45를 벗어나면 다시 입력받습니다.
마지막으로 로또인지 확인하는 함수입니다.
public static void isLotto(int arr[], int arr2[]) {
int count = 0;
for (int n : arr) {
for(int j : arr2) {
if(n == j) {
count++;}}}
이중 반복문을 사용해서
두 배열의 모든 요소를 비교해서
같으면 당첨횟수를 올립니다.
System.out.print("이번주 로또 번호 : ");
for(int n : arr) {
System.out.print(n + " ");
}
System.out.println();
System.out.print("당신이 선택한 로또 번호 : ");
for(int n : arr2) {
System.out.print(n + " ");
}
System.out.println();
System.out.printf("총 %d개 당첨!\n", count);
if(count == 4) {
System.out.println("축하합니다. 3등입니다!");
}else if(count == 5) {
System.out.println("축하합니다. 2등입니다!");
}else if(count == 6) {
System.out.println("축하합니다. 1등입니다!");
} else {
System.out.println("꽝입니다 ㅜㅜ");
}
}
그리고 count에 따라서 출력을 다르게 하면
당첨 여부를 확인할 수 있을 것입니다.
public static void lotto() {
int user[] = getUserNum();
int lotto[] = getLotto();
isLotto(lotto, user);
}
public static void main(String[] args) {
lotto();
}
}
함수를 한군대로 모으는 lotto함수를
메인에서 실행해보겠습니다.
1개 맞췄네요.
여러번 실행해봤지만 당첨은 안된다던...
배열과 이중 반복문 등,
절차 지향 코드를 복습하기 위해 구현한
로또 프로그램이었습니다.
다음 시간에는 객체 지향에 대한
내용을 배워보겠습니다!
'Java > 실습' 카테고리의 다른 글
[Java] 제곱수 판별하기 (0) | 2024.12.05 |
---|---|
[Java] 주사위 게임 (1) | 2024.12.05 |
[Java] 가위 바위 보 (1) | 2024.12.04 |
[Java] 배스킨라빈스 31게임 (0) | 2024.12.04 |
[Java] 거스름돈 환전 (1) | 2024.12.04 |