목차
1. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 1(윤년 계산기)
2. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 2(주사위 게임)
3. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 3(배수 판별기)
4. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 4(청구 금액 계산기)
5. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 5(다독왕)
6. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 6(피보나치 수)
7. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 7(출입증)
8. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 8(방정식)
9. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 9(숫자 맞추기 게임)
10. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 10(만원의 행복)
11. 2024.01.08 - [BackEnd/Java] - [JAVA] 조건문, 반복문을 이용한 문제 풀이 11(은행)
자바의 조건문, 반복문을 이용한 문제 풀이를 진행해보겠습니다~
문제 9) 숫자 맞추기 게임
숫자 맞추기 게임을 하는 프로그램을 작성하라.
프로그램은 1과 100을 포함한 사이의 임의의 정수를 선택해야 한다.
그 다음에 사용자에게 1에서 100사이의 숫자를 입력 받는다.
사용자가 추측한 숫자가 맞거나, 큰지, 작은지 알려주고 사용자가 정확하게 맞추거나 맞추기를 그만 둘 때까지 수자 맞추기를 계속하라. 맞출 때까지 추측한 횟수를 세고 사용자가 맞추고 난 후 그 횟수를 출력하라.
각 게임이 끝난후에 사용자가 맞추기 게임을 계속하기를 원하는지 묻고,
사용자가 게임을 종료하기를 원할 때 까지 게임을 계속하게 하라.
단, 각 게임 마다 추측 횟수는 초기화되어 새로 세어야 한다.
👉 출력방법
1. 숫자를 입력하십시오 → [숫자입력]
2. 정답은 해당 숫자보다 큽니다
3. 숫자를 입력하십시오 → [숫자입력]
4. 정답은 해당 숫자보다 작습니다
5. 반복 정답입니다!
6. 추측 횟수는 [숫자]번 입니다.
7. 계속 하시겠습니까?(y/n) → [y 또는 n 입력]
8. (y를 선택할 경우 다시 첫 줄로 돌아가 반복 . . .)
9. n 선택시 프로그램을 종료합니다. . .
👉 문제 풀이를 위한 Flow Chart
👉 문제 해답 코드
import java.util.Scanner; public class NmuberGame { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int random = 0; int count = 0; int input = 0; boolean tf = true; String yn = ""; do { if(tf) { random = (int)(Math.random()*100)+1; count = 1; tf = false; } System.out.print("숫자를 입력하십시오 : "); input = sc.nextInt(); if(input == random) { System.out.println("정답입니다!"); System.out.println("추측 횟수는 " + count + "번 입니다."); tf = true; } else { if(input > random) { System.out.println("정답은 해당 숫자보다 큽니다."); } else { System.out.println("정답은 해당 숫자보다 작습니다."); } count++; } if(tf) { do { System.out.print("계속 하시겠습니까?(y/n)"); yn = sc.next(); }while(!yn.equals("n") && !yn.equals("y")); } } while(!yn.equals("n")); System.out.println("프로그램을 종료합니다."); sc.close(); } }
👉 코드 해설
1. 입력을 위한 java.util의 Scanner 클래스를 가져온다.
2. 입력을 받기위한 변수, 값 지정을 위한 변수, 정답 여부 등을 확인하기 위한 변수 총 5개를 지정한다.
3. 조건문을 통해 정답 여부를 확인한다.
3-1) 참이라면, 랜덤 값(1~100)을 다시 입력 받고, count를 1, tf에 false 값을 넣는다.
4. 숫자를 입력받는다.
5. 입력 값과 랜덤 값이 같은지 확인한다.
5-1) 참이라면, 정답 문구 및 추측횟수를 출력한다.
5-2) 거짓이라면, input이 random보다 큰지 확인한다.
5-2-1) 정답이 숫자보다 크다는 문구 출력
5-2-2) 거짓이라면, 정답이 숫자보다 작다는 문구 출력
6. 조건문을 통해 정답 여부를 확인한다.
6-1) 정답이기 때문에 계속 진행할지 여부를 확인을 위한 문자를 입력받는다.
6-2) y, n 이라는 문자를 입력하지 않으면 6-1을 다시 진행한다.
7. n이라는 문자를 사용할 때까지 게임을 반복한다.
문제 풀이 시 do-while문을 이용해 일단 한 번 실행이 된 후 조건을 만족하면 계속 반복문이 실행되도록 문제 풀이를 진행했습니다. 최종 정답을 맞춰도 계속 진행 여부를 확인할 수 있도록 만들었습니다.
if(tf)를 동일한 while문 내에 2개나 사용하였습니다. 이 것을 하나로 줄일 수 있는 방법을 찾을 수 있도록 노력해야겠어요!
혹시나 코드를 보고 좀 더 간단하게 풀이하실 수 있는 분들은 답글 부탁드려요!!!!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
'BackEnd > Java' 카테고리의 다른 글
[JAVA] 조건문, 반복문을 이용한 문제 풀이 11(은행) (2) | 2024.01.09 |
---|---|
[JAVA] 조건문, 반복문을 이용한 문제 풀이 10(만원의 행복) (1) | 2024.01.09 |
[JAVA] 조건문, 반복문을 이용한 문제 풀이 8(방정식) (1) | 2024.01.08 |
[JAVA] 조건문, 반복문을 이용한 문제 풀이 7(출입증) (0) | 2024.01.08 |
[JAVA] 조건문, 반복문을 이용한 문제 풀이 6(피보나치 수) (0) | 2024.01.08 |