Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Full-Stack 개발자가 되려는 작은 개발자의 블로그

Java 기초를 이용한 로또 프로그램/야구 게임 본문

강의 정리/Java

Java 기초를 이용한 로또 프로그램/야구 게임

jhjin 2020. 3. 15. 21:14

로또 프로그램

import java.util.Random;

public class LottoProgram {
	public static void main(String[] args) {
		//로또 번호를 생성할 Random 객채 rand 생성
		Random rand=new Random();
		//로또 번호를 담을 크기가 6인 정수형 배열
		int lottonNum[]=new int[6];
		
		//배열의 크기만큼 i를 반복한다.
		for(int i=0;i<lottonNum.length;i++) {
			//i번째 배열에 1~45까지의 랜덤 수를 담는다.
			lottonNum[i]=rand.nextInt(45)+1;
			//j를 0부터 i전까지 반복한다.
			for(int j=0;j<i;j++) {
				//현재(i)번째 들어간 랜덤 수와 이전(j)번째의 랜덤수와 같다면
				if(lottonNum[i]==lottonNum[j]) {
					//i를 감소시킨다.
					// > i를 감소시켜 i번째 값을 바꾼다.
					i--;
					//이후 반복은 필요없으므로 j반복문을 나간다.
					break;
				}
			}
		}
		System.out.println("로또 프로그램");
		//배열 길이만큼 k를 반복한다.
		for(int k=0;k<lottonNum.length;k++) {
			System.out.print(lottonNum[k]+" ");
		}
	}
}

프로그램 실행 결과

야구게임 프로그램

import java.util.Random;
import java.util.Scanner;

public class BaseballGame {
    public static void main(String[] args) {
        //정답을 키보드로 입력받기 위한 Scanner객체 scan 생성
        Scanner scan = new Scanner(System.in);
        //랜덤한 숫자를 생성 할 Random 객체 rand 생성
        Random rand = new Random();

        //랜덤한 숫자를 담을 크기가 3인 정수형 배열
        int baseNum[] = new int[3];
        //입력한 정답을 담을 크기가 3인 정수형 배열
        int resNum[] = new int[3];

        //숫자는 맞지만 위치가 틀렸을 때를 카운트 할 변수
        int ball = 0;
        //숫자,위치 모두 맞혔을 때를 카운트 할 변수
        int strike = 0;
        //도전 횟수를 카운트 할 변수
        int cnt = 0;

        // 중복없이 맞출 숫자를 생성 > 로또 생성과 같은 과정
        for (int i = 0; i < baseNum.length; i++) {
            baseNum[i] = rand.nextInt(10);
            for (int j = 0; j < i; j++) {
                if (baseNum[i] == baseNum[j]) {
                    i--;
                    break;
                }
            }
        }
        //시험용 > 정답을 미리 알려줌
        System.out.println(baseNum[0]+" "+baseNum[1]+" "+baseNum[2]);

        //정답을 맞추거나 완전 틀릴때까지 무한 루프
        while (true) {
            //한 번 시도 할 때마다 값을 0으로 초기화 해준다.
            strike=0;
            ball=0;
            //사용자를 위한 출력 문구
            System.out.println("=====================================");
            System.out.println("맞출 세 자리 수를 입력 예)3 5 9");
            System.out.print("            >");
            //세 자리의 숫자를 입력받아 저장한다.
            for (int k = 0; k < resNum.length; k++) {   
                resNum[k] = scan.nextInt();
            }
            //배열의 길이만큼 반복한다.
            for(int l=0;l<baseNum.length;l++){
                //배열의 길이만큼 반복한다.
                for(int m=0;m<resNum.length;m++){
                    //정답의 l번째 값과 입력한 정답의 m번째 값이 같고, 위치 또한 같다면
                    if(baseNum[l]==resNum[m]&&l==m){
                        //strike를 증가
                        strike++;                
                    //정답의 l번째 값과 입력한 정답의 m번째 값만 같다면     
                    }else if(baseNum[l]==resNum[m]){
                        //ball을 증가
                        ball++;
                    }
                }
            }
            System.out.println("=====================================");
            //시도 횟수를 증가
            cnt++;
            //strike도 ball도 증가 된 값이 없다면 > 아무것도 맞추지 못함
            if(strike==0&&ball==0){
                System.out.println("out 입니다^^");
                //무한 루프를 멈추기 위한 break;
                break;
            }
            //세 숫자를 모두 맞춘 경우
            if(strike==3){
                System.out.println(cnt+"번 만에 도전 성공! > "+resNum[0]+" "+resNum[1]+" "+resNum[2]);
                //무한 루프를 멈추기 위한 break;
                break;
            }
            //현재의 결과를 알려준다.
            System.out.println(strike+"Strike | "+ball+"Ball");
            System.out.println(resNum[0]+" "+resNum[1]+" "+resNum[2]);
        }
    }
}

 

'강의 정리 > Java' 카테고리의 다른 글

객체 지향 실습3  (0) 2020.03.19
객체 지향 실습1  (0) 2020.03.16
Java를 이용한 학생 관리 프로그램/가계부 프로그램  (0) 2020.03.11
Java 기초 실습5  (0) 2020.03.09
Java를 이용한 달력 프로그램  (0) 2020.03.08
Comments