요구 사항 :
- 입력값이 유효한지 검사하기
- 3자리 수인지 자릿수를 검사합니다.
- 중복된 숫자가 없는지 중복 숫자를 검사합니다.
- 입력값에 숫자만 포함되어 있는지 검사합니다.
- 유효하지 않은 값인 경우 “올바르지 않은 입력값입니다.”를 출력합니다.
- 출력 개선
- 프로그램을 시작할 때 안내문구를 보여주세요.
- 1을 입력하면 “필수 구현 기능” 의 예시처럼 게임이 진행됩니다.
- “2. 게임 기록 보기”는 Lv3에서 제시됩니다. (2는 입력할 수 없습니다.)
- 3을 입력하면 게임이 종료됩니다.
- 프로그램을 시작할 때 안내문구를 보여주세요.
- 정답을 맞히는 경우, 아래 문구를 보여주세요
// 예시
환영합니다! 원하시는 번호를 입력해주세요
1. 게임 시작하기 2. 게임 기록 보기 3. 종료하기
1 // 1번 게임 시작하기 입력
< 게임을 시작합니다 >
숫자를 입력하세요
...
수정 사항 및 아이디어
1. 입력 받을 때 String 타입으로 받았는데 int 타입으로 수정해야함. 그 이후 자릿수 검사, 중복된 숫자 검사, 숫자만 포함되었는지 검사를 해야함....
2. 예외 처리 마구 하기.
3. 게임 시작 시 안내 문구 메서드를 만들까? -> 클래스를 만들자
4. 정답 시 게임 다시할 수 있게 하기 -> do-while문으로 해결
Beginning 클래스
더보기
import java.util.Scanner;
public class Beginning {
int beginn () {
System.out.println("숫자 야구 게임을 시작하지");
System.out.println("날 쓰러뜨리지 못한다면 지나갈 수 없다!");
System.out.println("1. 게임 시작하기 2. 게임 기록보기 3. 종료하기");
Scanner inputValue = new Scanner(System.in);
int input = inputValue.nextInt();
return input;}
}
InputNumber 클래스
더보기
import java.util.InputMismatchException;
import java.util.Scanner;
public class InpuetNumber {
public int first;
public int second;
public int third;
public InpuetNumber(int first, int second, int third) {
this.first = first;
this.second = second;
this.third = third;
}
public static InpuetNumber getThreeInts() {
System.out.println("<게임을 시작합니다>");
System.out.println("세 자리 수의 자연수를 입력하세요");
Scanner inputNumber = new Scanner(System.in);
boolean valid = true;
int int0 = 0;
int int1 = 0;
int int2 = 0;
while (!valid) {
try {
int answerNumber = inputNumber.nextInt();
int0 = answerNumber / 100;
int1 = (answerNumber / 10) % 10;
int2 = answerNumber % 10;
if (answerNumber >= 100 && answerNumber <= 999) {
valid = true;
} else if (int0 == int1 || int0 == int2 || int1 == int2) {
System.out.println("중복된 숫자를 입력하였습니다");
} else {
System.out.println("잘못된 입력입니다. 세 자리 수를 자연수를 입력하세요");
}
} catch (InputMismatchException e) {
System.out.println("잘못된 입력입니다. 세 자리 수의 자연수를 입력하세요");
inputNumber.next();
}
}
return new InpuetNumber(int0, int1, int2);
}
}
Main 클래스
더보기
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
MakeNumber makeNumber = new MakeNumber();
ArrayList<Integer> numberList = new ArrayList<>(makeNumber.makeNumbers());
System.out.println(numberList);
MatchNumbers matchNumbers = new MatchNumbers();
boolean endGameKey = false;
Beginning beginning = new Beginning();
int startKey = beginning.begin();
switch (startKey) {
case 1:
int restartKey;
do {
System.out.println("게임을 시작합니다");
do {
InpuetNumber threeInts = InpuetNumber.getThreeInts();
endGameKey = matchNumbers.operate(numberList, threeInts.first,
threeInts.second, threeInts.third, endGameKey);
} while (endGameKey);
System.out.println("게임을 다시 시작하시려면 0, 끝내려면 아무키나 입력하시오");
Scanner restart = new Scanner(System.in);
restartKey = restart.nextInt();
} while (restartKey == 0);
case 2:
case 3:
System.out.println("다음에 또 만나요");
}
}
}
'Java > 기타' 카테고리의 다른 글
숫자 야구 게임 Lv 4 (14) | 2024.09.22 |
---|---|
숫자 야구 게임 Lv3 (0) | 2024.09.14 |
숫자 야구 게임 Lv1 (1) | 2024.09.12 |
1, 2주차 과제 다시 하기. (4) | 2024.09.07 |
계산기 만들기 (0) | 2024.09.06 |