티스토리 뷰
/*
* 2014244057, 2학년, 이종민
* 사실상 자바의 장점을 못살려서 C로 쓰셔도 될듯
* 개발소스코드 내에 주석으로 개발자의 학번, 학년, 및 성명 기입 필요. 미기입 시 0점 처리됩니다.
*
*/
import java.util.Random;
import java.util.Scanner;
public class Baseball{
static int compare (int playerNumbers[], int Numbers[], int length, int player, int MAX) { //
//요구사항8: 숨겨진 값 비교 및 결과 출력을 위한 메소드 생성 필요O
int strike = 0;
int ball = 0;
if(length != MAX) {
System.out.println("자릿수를 확인해주세요!");
}
else {
for(int o = length - 1; o >= 0; o--) { // 플레이어의 입력값을 한자리 한자리 배열에 넣어주기
playerNumbers[o] = player % 10;
player /= 10;
}
for(int p = 0; p < MAX; p++) { // 랜덤수와 플레이어의 숫자 Compare
for(int q = 0; q < MAX; q++) {
if(p == q) { // 스트라이크는 자릿수까지 맞아야하기 때문에 p == q
if(Numbers[p] == playerNumbers[q]) { // 맞으면
strike++; // 스트라이크++
}
}
else if (Numbers[p] == playerNumbers[q]) { // p == q가 아니면 볼 찾기
ball++;
}
}
}
}
System.out.println("결과값: " + strike + "S " + ball + "B"); // 요구사항7: 플레이어가 매회 값을 입력 시 값의 비교 결과 출력 (상단의 예시 참조)
int temp = strike; //strike를 넘겨주기도 해야하고 입력이 끝나면 0으로 초기화도 해야해서 임시변수생성해서 main으로 리턴
strike = 0; // 다음 입력을 위해 스트라이크와 볼 0으로 초기화
ball = 0;
return temp;
}
static int[] genNumber(int Numbers[], int MAX) {
int[] x = {0, 0, 0, 0, 0};
Random random = new Random(); // 랜덤 객체 생성
for(int i = 0; i < MAX; i++) { // 0 1 2 3 4
int temp = random.nextInt(9) + 1; // (0 ~ 8) + 1 안의 랜덤숫자를 생성해서 temp에 넣어줌
x[i] = temp; // Numbers[i]에 temp 랜덤숫자를 넘어줌
for(int j = 0; j < MAX; j++) { // 0 1 2 3 4 5
while(true) {
if(i == j) { //i와 j가 같을때 같은수를 두고 비교하면서 무한루프에 빠질까봐 예외처리 시작
break;
}
else if(x[i] ==x[j]) { // Numbers[i]와 Numbers[j]가 같을때
temp = random.nextInt(9) + 1; // 중복이기때문에 새로운 랜덤숫자를 temp에 넣어줌
x[i] = temp; // Numbers[i]에 temp 랜덤숫자를 넣어줌
for(int l = 0; l < MAX; l++) { // 재 생성한 숫자가 또 배열안에 있는 숫자와 중복일경우를위한 예외처리
if(i == l) { // 위에 26줄과 같은 이유로 예외처리
break;
}
while(true) {
if(x[i] == x[l]) { // Numbers[i]와 Numbers[l]이 중복이면
temp = random.nextInt(9) + 1; // 다시 temp에 랜덤 숫자를 넣어주고
x[i] = temp; // Numbers[i]에 temp 랜덤숫자를 넣어줌
}
else if(x[i] != x[l]){ // Numbers[i]와 Numbers[l]이 중복이 아니면
break; // 탈출~
}
}
}
}
else if(x[i] != x[j]) { // Numbers[i]와 Numbers[j]가 중복이 아니라면
break; // 탈출~
}
}
}
}
return x;
}
public static void main(String[] args) {
final int MAX = 5; // 자릿수 지정
int[] Numbers = {0, 0, 0, 0, 0}; // 배열 초기화
int[] playerNumbers = {0, 0, 0, 0, 0};// 배열 초기화
int strike = 0;
int ball = 0;
Numbers = genNumber(Numbers, MAX); //랜덤숫자 생성 메소드 호출()
System.out.print("숨겨진 값: ");
for(int r = 0; r < MAX; r++) { // 숨겨진 값 출력해주기
System.out.print(Numbers[r]);
}
System.out.println();
Scanner scanner = new Scanner(System.in); // 스케너 객체 생성
while(true) { // 플레이어가 몇번으로 맞출지 모르기때문에 while
System.out.print("플레이어 입력값: ");
String tempString = scanner.nextLine(); // 키보드를 통해 들어오는 문자열을 tempString 변수에 저장
if(tempString.equals("q")) {
System.out.println("q가 입력되어 종료합니다.");
break;
}
int length = tempString.length(); // 입력된 값의 길이 구하기
int player = Integer.parseInt(tempString); // 요구사항5: 키보드를 통해 사용자가 입력하는 값을 문자열(String)으로 입력 후 정수화 시킴
if(length > MAX) {
System.out.println("숫자의 길이가 초과했습니다!"); // 요구사항6: 플레이어가 입력하는 수가 X자리의 범위가 넘으면 오류 메시지 출력 필요
}
else if (length < MAX) {
System.out.println("숫자의 길이가 짧습니다!");
}
else {
strike = compare(playerNumbers, Numbers, length, player, MAX);
if(strike == MAX) {
System.out.println(MAX + " 스트라이크 입니다!(게임 끝)");
break;
}
}
}
}
}
/*
* 요구사항1: 게임 시작 시 랜덤으로 만들어지는 수는 2자리에서 5자리까지 설정 가능 O
* 요구사항2: 게임 시작 시 랜덤으로 만들어지는 수의 각 자릿수는 1부터 9까지 임의의 수로 채워짐O
* 요구사항3: 게임 시작 시 랜덤으로 만들어지는 수의 각 자릿수는 중복되지 않음O
* 요구사항4: X자리의 랜덤 수를 생성은 메소드(Method)를 통해서 생성 시킴O
* 요구사항5: 키보드를 통해 사용자가 입력하는 값을 문자열(String)으로 입력 후 정수화 시킴O
* 요구사항6: 플레이어가 입력하는 수가 X자리의 범위가 넘으면 오류 메시지 출력 필요O
* 요구사항7: 플레이어가 매회 값을 입력 시 값의 비교 결과 출력 (상단의 예시 참조)O
* 요구사항8: 숨겨진 값 비교 및 결과 출력을 위한 메소드 생성 필요O
* later
*
* q를 입력했을때 브레이크 O
* 다른 문자열이 들어왔을때(숫자만 입력되게 하기?) 포기
* MAX보다 작은자릿수 입력못하게 하기 O
* 플레이어가 중복된 숫자를 입력하지 못하게 하기
*
* */
'Java > for Class, Project' 카테고리의 다른 글
자바 스레드 동기화 예제 Java Thread synchronize example (0) | 2017.09.29 |
---|---|
JAVA java9 eclipse(이클립스) NoclassdefFoundError 관련 실행불가 문제 해결 (0) | 2017.09.25 |
Java 자바 Thread 스레드 예제 (0) | 2017.09.20 |
JAVA PBL 저장용 (0) | 2017.09.18 |
Java 자바 예외처리 예제(InputMismatchException, ArithmeticException) (0) | 2017.09.18 |
티스토리 방명록
- Total
- Today
- Yesterday
Contact: j0n9m1n1@gmail.com