반응형
로또게임
사용자로부터 숫자를 입력 받아서
6개가 다 맞을시: 1등
5개가 맞을시: 2등
4개: 3등
3개: 4등
이 출력되는 프로그램을 작성하시오.
단 사용자가 1~45를 벗어난 값을 입력하면
올바른 값을 입력할때까지 다시 입력을 하게 만드세요
[ 프로그램 실행 예시 ]
더보기
당첨 번호 추첨 완료.
1 ~ 45 범위 내 번호 입력해주세요
1번째 숫자를 입력하세요 :999
잘못 입력되었습니다. (범위 밖 or 중복)
1번째 숫자를 입력하세요 :0
잘못 입력되었습니다. (범위 밖 or 중복)
1번째 숫자를 입력하세요 :45
2번째 숫자를 입력하세요 :1
3번째 숫자를 입력하세요 :1
잘못 입력되었습니다. (범위 밖 or 중복)
3번째 숫자를 입력하세요 :45
잘못 입력되었습니다. (범위 밖 or 중복)
3번째 숫자를 입력하세요 :3
4번째 숫자를 입력하세요 :4
5번째 숫자를 입력하세요 :5
6번째 숫자를 입력하세요 :6
로또번호 정렬 완료
사용자번호 정렬 완료
당첨 번호 : 1 5 26 30 38 44
사용자 번호 : 1 3 4 5 6 45
탈락입니다 ㅠㅠ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Random;
public class LottoGame {
final static int SIZE = 6; // SIZE 는 lottoNumbers.length(); 와 역할이 같음.
final static int MAX = 45;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Random random = new Random();
int[] lottoNumbers = new int[SIZE];
int[] userNumbers = new int[SIZE];
int score = 0;
// lottoNumbers에서 범위( 1 ~ 45 )내 숫자 인덱스에 입력.
for (int i = 0; i < SIZE; i++) {
lottoNumbers[i] = random.nextInt(MAX) + 1;
}
// lottoNumbers 배열 내 숫자 중복 제거
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
if (i != j && lottoNumbers[i] == lottoNumbers[j]) {
lottoNumbers[i] = random.nextInt(MAX) + 1;
j = -1;
}
}
}
System.out.println("당첨 번호 추첨 완료.");
// userNumbers 입력 받기
System.out.println("1 ~ 45 범위 내 번호 입력해주세요");
for (int i = 0; i < SIZE; i++) {
System.out.print((i + 1) + "번째 숫자를 입력하세요 :");
userNumbers[i] = Integer.parseInt(br.readLine());
//중복을 입력하면 true가 boolean 변수에 저장되도록 만들어보자
boolean isDuplicated = false;
for(int j = 0; j < i; j++) {
if (userNumbers[i] == userNumbers[j]) {
isDuplicated = true;
}
}
// userNumbers 범위 밖 숫자를 입력하거나 중복일 경우 에러
if (userNumbers[i] <= 0 || userNumbers[i] > MAX || isDuplicated) {
// if는 (true / false)로 중괄호 내 코드가 실행될지 안될지 구분하는데,
// boolean 변수인 isDuplicated는 그 자체로 true / false로써 동작하므로
// isDuplicated = true라고 조건식을 입력할 필요 x
System.out.println("잘못 입력되었습니다. (범위 밖 or 중복)");
i--;
}
}
// lottoNumbers 배열 정렬
for (int i = 0; i < SIZE - 1; i++) {
if (lottoNumbers[i] > lottoNumbers[i + 1]) {
int temp = lottoNumbers[i];
lottoNumbers[i] = lottoNumbers[i + 1];
lottoNumbers[i + 1] = temp;
i = -1;
}
}
System.out.println("로또번호 정렬 완료");
// userNumber 배열 정렬
for (int i = 0; i < SIZE - 1; i++) {
if (userNumbers[i] > userNumbers[i + 1]) {
int temp = userNumbers[i];
userNumbers[i] = userNumbers[i + 1];
userNumbers[i + 1] = temp;
i = -1;
}
}
System.out.println("사용자번호 정렬 완료");
// 당첨번호 & 입력번호 발표
System.out.print("당첨 번호 : ");
for (int i = 0; i < SIZE; i++) {
System.out.print(lottoNumbers[i] + " ");
}
System.out.println();
System.out.print("사용자 번호 : ");
for (int i = 0; i < SIZE; i++) {
System.out.printf(userNumbers[i] + " ");
}
// 번호 배열 비교
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
if (lottoNumbers[i] == userNumbers[j])
score++;
}
}
// 결과 1
System.out.println();
// if (score >= 4) {
// System.out.println("총 " + score + "개 맞추셨습니다. " + (7 - score) + "등 당첨입니다!!!");
// } else {
// System.out.println(score + "개 맞았습니다. 탈락입니다 ㅠㅠ");
// }
//결과 2번째 방법 (switch이용)
switch(score) {
case 6:
System.out.println("총"+ score+ "개 맞추셨습니다. 1등입니다.");
break;
case 5:
System.out.println("총"+ score+ "개 맞추셨습니다. 2등입니다.");
break;
case 4:
System.out.println("총"+ score+ "개 맞추셨습니다. 3등입니다.");
break;
case 3:
default:
System.out.println("탈락입니다 ㅠㅠ");
break; // 안넣어도 되지만 원칙적으로 넣어줌
}
}
}
반응형
'Dev > Java' 카테고리의 다른 글
JDK 1.8 설치중 AdoptOpenJDK (OpenJ9) vs (Hotspot) (0) | 2021.02.18 |
---|---|
Java - NotePad (Swing) (0) | 2020.10.22 |
Java - 숫자맞추기 게임 (Math.random(), .equals(), BufferedReader) (0) | 2020.09.09 |
Java 가위바위보 게임 ( Math.random(), System.in.read() ) (0) | 2020.09.08 |
Java - BufferReader, InputStreamReader 이용 입력 예제 (0) | 2020.09.04 |