전체 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("로또 번호 생성 프로그램을 시작합니다.");
int answer = 0;
while(true){
System.out.println("로또 번호를 총 몇 번 생성하시겠습니까? (최소) : 1 / (최대) : 5");
try {
answer = Integer.parseInt(br.readLine());
if(answer < 1 || answer > 5)
System.out.println("로또 번호는 최소 1번에서 최대 5번까지 생성 가능합니다.");
else break;
} catch(NumberFormatException e) {
System.out.println("정확한 숫자를 입력해주세요. (최소) : 1 / (최대) : 5");
}
}
for(int i=0; i<answer; i++){
System.out.println("=".repeat(20));
System.out.println("<< %d번째 로또 번호 >>".formatted(i + 1));
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
List<Integer> lotto = new ArrayList<>();
for(int j=0; j<6; j++){
int number = (int) (Math.random() * 44 + 1);
lotto.add(number);
}
for(int k=1; k<=45; k++){
if(lotto.contains(k)){
sb1.append(k + " ");
sb2.append("■ ");
} else sb2.append("□ ");
if(k % 6 == 0) sb2.append("\n");
}
System.out.println(sb1);
System.out.println(sb2);
System.out.println("=".repeat(20));
}
System.out.println("로또 번호 생성 프로그램을 종료합니다.");
br.close();
}
}
진행 흐름
1. 프로그램 시작과 동시에 로또 번호를 생성할 횟수를 입력 받는다.
- 1 미만 5 초과의 숫자를 입력하거나, 숫자가 아닌 텍스트를 입력할 경우 안내와 함께 다시 입력 받는다.
int answer = 0;
while(true){
System.out.println("로또 번호를 총 몇 번 생성하시겠습니까? (최소) : 1 / (최대) : 5");
try {
answer = Integer.parseInt(br.readLine());
if(answer < 1 || answer > 5)
System.out.println("로또 번호는 최소 1번에서 최대 5번까지 생성 가능합니다.");
else break;
} catch(NumberFormatException e) {
System.out.println("정확한 숫자를 입력해주세요. (최소) : 1 / (최대) : 5");
}
}
2-1. 입력 받은 횟수만큼 로또 번호 6개를 생성한다.
for(int i=0; i<answer; i++){
System.out.println("=".repeat(20));
System.out.println("<< %d번째 로또 번호 >>".formatted(i + 1));
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
List<Integer> lotto = new ArrayList<>();
for(int j=0; j<6; j++){
int number = (int) (Math.random() * 44 + 1);
lotto.add(number);
}
...
}
2-2. 생성한 로또 번호를 숫자 및 로또 용지의 위치에 맞게 시각화한 이미지로 출력한다.
for(int i=0; i<answer; i++){
...
for(int k=1; k<=45; k++){
if(lotto.contains(k)){
sb1.append(k + " ");
sb2.append("■ ");
} else sb2.append("□ ");
if(k % 6 == 0) sb2.append("\n");
}
System.out.println(sb1);
System.out.println(sb2);
System.out.println("=".repeat(20));
}
실행 화면
* 입력 받은 값이 숫자가 아니거나 1 미만 5 초과의 숫자인 경우, 안내와 함께 다시 입력 받는다.
가위바위보 게임, 구구단 게임보다 구현이 훨씬 더 간단하고 쉬웠다.
입력 받는 값이 하나 뿐이고, 1과 5 사이의 숫자로 제한되어 있어서 그런 것 같다.
다음 번엔 로또 번호 구매 + 당첨 시뮬레이션을 적용한 프로그램을 만들어봐야겠다.
'프로젝트 & TIL > 자바 토이 프로젝트' 카테고리의 다른 글
자바 토이 프로젝트 5 - 좌석 예약 프로그램 (0) | 2023.05.11 |
---|---|
자바 토이 프로젝트 4 - 회원가입 & 로그인 프로그램 (0) | 2023.05.08 |
자바 토이 프로젝트 2 - 구구단 게임 (0) | 2023.05.07 |
자바 토이 프로젝트 1 - 가위 바위 보 게임 (0) | 2023.05.06 |