[JAVA] 반복문의 사용 및 실습

HYEOB KIM·2022년 8월 7일
1

JAVA

목록 보기
4/9

for 문

for (int inx = 1; inx <= 10; inx++) {

}

while 문

while (inx < 10) {
	...
	inx++;
}

break와 continue

  • break : 반복문 내에서 break를 만나면 그 즉시 Loop에서 빠져나옵니다.
  • Continue : 반복문 내에서 Continue를 만나면 이후의 코드를 생략하고 다음 Loop로 넘어갑니다.
for ( 시작값 ; 조건식 ; 증감식 )
  // 조건식의 결과가 true 일 때 반복해서 실행하는 내용
  break;
}
while (조건식 )
  // 조건식의 결과가 true 일 때 반복해서 실행하는 내용
  break;
}

for ( 시작값 ; 조건식 ; 증감식 )
  // 조건식의 결과가 true 일 때 반복해서 실행하는 내용
  continue;
}
while (조건식 )
  // 조건식의 결과가 true 일 때 반복해서 실행하는 내용
  continue;
}

실습

단순히 조건문반복문을 이용한 문제 풀이입니다.

야구 게임

각 자리의 숫자가 서로 다른 3 자리 숫자를 맞추는 게임을 야구게임이라고 부른다.
자릿수가 같으면서 숫자가 같으면 스트라이크 , 자릿수가 다른데 숫자가 같으면 볼 , 어떠한 숫자도 포함되어 있지 않으면 아웃이다.
간단한 게임을 구현해보자.

1) 서로 다른 3자리 수를 입력할 수 있도록 메시지를 출력하고 3자리 숫자를 입력 받는다.
2) 야구 게임 시작 메시지를 출력하고 예상 숫자를 입력 받을 수 있도록 메시지를 출력하고 서로 다른 3자리 수를 입력 받는다.
3) 자릿수가 같으면서 숫자가 같으면 스트라이크 자릿수가 다르면서 숫자가 맞춰야 할 숫자에 포함되어 있으면 볼 어떤 숫자도 포함되어 있지 않으면 아웃으로 처리한다.
4) 정확히 맞추지 못하면 다시 예상 숫자를 입력을 받을 수 있도록 메시지를 출력하고 3자리 숫자를 입력 받는다.
5) 스트라이크의 개수가 3개면 Sample Run 과 똑같이 보이도록 메시지를 출력하고 종료한다.
6) 예상 숫자 입력은 7번까지만 입력이 가능하고 7번 초과 입력하거나 정답을 맞추는 경우 게임이 종료된다.
7) 7번 이내에 정답을 맞추지 못하면 "OMG! Game Over!!!" 메시지가 출력된다.

실행 예제

서로 다른 3 자리 수를 입력해 주세요 : 476
==== 야구 게임 시작 ====
예상 숫자를 입력해 주세요 : 240
스트라이크 : 0 볼 : 1 아웃 : 2
예상 숫자를 입력해 주세요 : 286
스트라이크 : 1 볼 : 0 아웃 : 2
예상 숫자를 입력해 주세요 : 680
스트라이크 : 0 볼 : 1 아웃 : 2
예상 숫자를 입력해 주세요 : 426
스트라이크 : 2 볼 : 0 아웃 : 1
예상 숫자를 입력해 주세요 : 476
스트라이크 : 3 볼 : 0 아웃 : 0
축하합니다. 정답을 맞추셨습니다.

풀이 코드

package com.lgcns.mission;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BaseBallGame {

	public static void main(String[] args) {
		System.out.print("서로 다른 3자리 수를 입력해 주세요 : ");
		int num = getUserInput();
		int num100 = num / 100;
		int num10 = (num % 100) / 10;
		int num1 = num % 10;

		System.out.println("==== 야구 게임 시작 ====");

		int input = 0;
		int inx = 1;

		while (input != num) {
			if (inx == 8) {
				System.out.println("OMG! Game Over!!!");
				break;
			}
			
			System.out.print("예상 숫자를 입력해 주세요 : ");
			input = getUserInput();

			int input100 = input / 100;
			int input10 = (input % 100) / 10;
			int input1 = input % 10;

			int strike = 0;
			int ball = 0;
			int out = 0;

			if (num100 == input100) {
				strike += 1;
			} else if (num100 == input10 || num100 == input1) {
				ball += 1;
			} else {
				out += 1;
			}

			if (num10 == input10) {
				strike += 1;
			} else if (num10 == input100 || num10 == input1) {
				ball += 1;
			} else {
				out += 1;
			}

			if (num1 == input1) {
				strike += 1;
			} else if (num1 == input100 || num1 == input10) {
				ball += 1;
			} else {
				out += 1;
			}
		
			System.out.println("스트라이크 : " + strike + " 볼 : " + ball + " 아웃 : " + out);
			

			if (strike == 3) {
				System.out.println("축하합니다. 정답을 맞추셨습니다.");
				break;
			} 
			inx++;
		}
	}
    
	public static int getUserInput() {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String inputString = null;

		try {
			inputString = br.readLine();

		} catch (IOException e) {
			e.printStackTrace();
		}

		return Integer.parseInt(inputString);
	}
}
profile
Devops Engineer

0개의 댓글