기능
#로또 번호 추첨(중복번호 불가,1~45까지의 숫자)
#지난 주 로또 번호 확인(매주 업데이트 하는 방법)
#번호를 입력하여 로또 당첨확인
이번에 만드는 프로그램은 기능을 크게 3가지로 볼 수 있다.
1.랜덤으로 로또 번호 추첨
2.지난 주의 로또 번호 확인
3.번호를 입력하여 당첨 여부 확인
이 중 1번과 2번을 첫날에 구현해보았다.
먼저 랜덤으로 번호를 뽑아 배열에 넣기 위하여 랜덤 메소드를 import 시켰고
메뉴를 넘어가게 하기 위한 값을 받기 위하여 Scanner 메소드도 import시켰다.
그 후 while 문을 활용하여 배열의 인덱스0번 부터 6번까지 7개의 숫자를 넣어주었다. 숫자를 7개로 한 이유는 6개의 일반 번호하고 하나의 보너스 번호를 만들기 위해서다.
큰 틀을 잡아주는 첫 번쨰 while문 안에 먼저 메뉴를 구성하는 문단을 넣어주었고
그 후 scannner를 통하여 정수형 데이터를 menu1에 넣어주었다.
두 번째 while문에서는 세부 메뉴를 구성하였는데
if문을 안에 넣어주어 menu1의 값에 따라 원하는 기능이 발현되도록 만들었다.
첫 날 가장 중요한 부분이었던 어떻게 중복을 피해서 숫자를 뽑을 것이냐 많은 고민을 했었다.
어떡하면 몇 줄이라도 줄일 수 있을까 생각을 했는데 마땅한 방법이 더는 떠오르지 않아서 처음 생각한대로 랜덤으로 뽑은 숫자를 AND논리 연산자를 이용하여 배열의 값과 하나하나 비교하는 방법을 택했다.(더 좋은 방법이 있으면 언제나 환영입니다 :D)
지난 주 로또 번호는 단순하게 배열을 하나 만들어서 매주 업데이트를 하는 방식으로 저장해놓았다.
추첨된 번호를 출력을 하고 가시성을 높이기 위해 줄바꿈을 두번해주었고
break를 통해 두번 째 while문에서 벗어나 메인 메뉴로 가게끔 만들었다.
두번째 세부 메뉴인 '지난주 당첨 번호 출력'부분도 만들어놓은 지난주 당첨 번호 배열을 출력을 시켜주는 방식으로 구현했고 마찬가지로 break를 통해
다시 메인 메뉴로 나가게끔 만들었다.
우선 스캐너를 통해 각 번호를 담당하는 변수에 입력한 번호를 넣어주었다.
그 후 당첨 개수 체크를 위한 변수 count 와 2등과 3등을 가려주는 보너스 번호의 당첨 체크를 위한 변수 bonus를 선언해주고
while문을 활용하여 적중한 번호 개수를 카운트 해줍니다.
각 입력된 번호가 로또 당첨 번호 배열의 0번 인덱스부터 5번 인덱스 까지 돌면서 숫자가 같으면 카운트를 올려준다.
보너스는 마지막 보너스 번호가 6번 인덱스와 같으면 하나 올려주었다.
카운트가 6, 즉 보너스번호를 제외한 나머지 번호가 모두 맞으면 1등으로 설정했다.
카운트가 5이면서 보너스 번호를 맞추었으면 2등으로 설정했고
카운트가 5이면서 보너스 번호를 못 맞추었으면 3등으로 설정했다.
나머지는 카운트가 3일때 5등까지만 설정해주었다.
그 후 최종적으로 4가 입력되었을때 반복문이 다시 실행되지 않도록 m1에 false를
넣어주고 break 시킨다.
package practice;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
boolean m1 = true;
//**지난주 로또 번호 (매주 업데이트 필요)**//
int last_week_lotoo[] = new int[7];
last_week_lotoo[0] = 1; //첫번째 숫자
last_week_lotoo[1] = 2; //두번째 숫자
last_week_lotoo[2] = 3; //세번쨰 숫자
last_week_lotoo[3] = 4; //네번째 숫자
last_week_lotoo[4] = 5; //다섯번째 숫자
last_week_lotoo[5] = 6; //여섯번째 숫자
last_week_lotoo[6] = 7; //보너스 숫자
while (m1) {
System.out.println("안녕하세요! 로또풀라이프 입니다.");
System.out.println("로또 번호 추첨은 숫자 [1]");
System.out.println("지난 주 로또 번호 확인은 숫자 [2]");
System.out.println("로또 당첨을 확인하시려면 숫자 [3]");
System.out.printf("로또풀라이프를 종료하시려면 숫자 [4] 를 눌러주세요: %n");
System.out.println();
int menu1 = scan.nextInt();
while (true) {
if (menu1 == 1) {
Random number = new Random();
int min = 1; //0이 뽑히지 않게 하기 위한 min 값 지정
//로또 번호 추첨 number.nextInt(45)+min
int lotto[] = new int[7];
int i = 0;
while (i < 7) {
if ( //로또 번호 중복을 피하기 위한 부분
number.nextInt(45) + min != lotto[0] &&
number.nextInt(45) + min != lotto[1] &&
number.nextInt(45) + min != lotto[2] &&
number.nextInt(45) + min != lotto[3] &&
number.nextInt(45) + min != lotto[4] &&
number.nextInt(45) + min != lotto[5] &&
number.nextInt(45) + min != lotto[6]) {
lotto[i] = number.nextInt(45) + min;
i++;
}
}
System.out.print("추첨된 번호는 ");
System.out.printf("[%d %d %d %d %d %d]입니다. 보너스번호: %d", lotto[0], lotto[1],
lotto[2], lotto[3], lotto[4], lotto[5], lotto[6]);
System.out.println();
System.out.println();
break;
} else if (menu1 == 2) {
System.out.print("지난주 당첨 번호는 ");
System.out.printf("[%d %d %d %d %d %d]입니다. 보너스번호: %d", last_week_lotoo[0],
last_week_lotoo[1], last_week_lotoo[2], last_week_lotoo[3],
last_week_lotoo[4], last_week_lotoo[5], last_week_lotoo[6]);
System.out.println();
System.out.println();
break;
} else if (menu1 == 3) {
System.out.print("첫번째 숫자를 입력하세요: ");
int lotto1 = scan.nextInt();
System.out.println();
System.out.print("두번째 숫자를 입력하세요: ");
int lotto2 = scan.nextInt();
System.out.println();
System.out.print("세번째 숫자를 입력하세요: ");
int lotto3 = scan.nextInt();
System.out.println();
System.out.print("네번째 숫자를 입력하세요: ");
int lotto4 = scan.nextInt();
System.out.println();
System.out.print("다섯번째 숫자를 입력하세요: ");
int lotto5 = scan.nextInt();
System.out.println();
System.out.print("여섯번째 숫자를 입력하세요: ");
int lotto6 = scan.nextInt();
System.out.println();
System.out.print("보너스 숫자를 입력하세요: ");
int lotto_b = scan.nextInt();
System.out.println();
int count = 0; // 당첨 개수 체크
int bonus = 0; // 보너스 숫자 당첨 체크
int k = 0;
while (k < 6) {
if (lotto1 == last_week_lotoo[k]) {
count++;
} else if (lotto2 == last_week_lotoo[k]) {
count++;
} else if (lotto3 == last_week_lotoo[k]) {
count++;
} else if (lotto4 == last_week_lotoo[k]) {
count++;
} else if (lotto5 == last_week_lotoo[k]) {
count++;
} else if (lotto6 == last_week_lotoo[k]) {
count++;
} else if (lotto_b == last_week_lotoo[6]) {
bonus++;
}
k++;
}
if (count == 6) {
System.out.printf("1 등 당첨입니다. 축하드립니다%n%n%n");
break;
} else if (count == 5 && bonus == 1) {
System.out.printf("2 등 당첨입니다. 축하드립니다%n%n%n");
break;
} else if (count == 5) {
System.out.printf("3 등 당첨입니다. 축하드립니다%n%n%n%n");
break;
} else if (count == 4) {
System.out.printf("4 등 당첨입니다. 축하드립니다%n%n%n");
break;
} else if (count == 3) {
System.out.printf("5 등 당첨입니다. 축하드립니다%n%n%n");
break;
}
}
if(menu1==4){
System.out.println("로또풀라이프를 종료합니다");
System.out.println("감사합니다");
m1=false;
break;
}
}
}
}
}