| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- PointCut
- springjdbc
- gradle
- @RequestMapping
- SpringBoot
- .xml
- 비즈니스레이어
- application.properties
- c:if
- @RequestParam
- produces
- 생성자주입
- @
- @Valid
- jointpoint
- Model
- AOP
- springmvc
- MVC
- 서비스레이어
- after-throwing
- spring
- @ResponseBody
- 바인딩변수
- 어노테이션
- 유효성검사
- 스프링
- Java
- frontController
- 의존주입
- Today
- Total
메모장
3,6,9 게임 본문
3,6,9 문제
출처 입력
★ 단계
9 짝 33 짝짝 939 짝짝짝
1~1000 중에서 랜덤으로 정수 1개 생성
[19] : 짝
정답입니다!
[19] : 19
오답입니다.....
[22] : 22
정답입니다!
1단계의 풀이를 먼저 써보자 !
먼저 -★ 한국어 풀이를 해보았다 !
1~1000까지 랜덤으로 정수 1개 생성
3,6,9 에서 짝 이라고 출력하기
369에서 짝이라고 출력 안하면 오답입니다.
369가 포함 안되어있을때 숫자를 입력하면 정답입니다.
▶ 메서드로 쓸수 있는 부분
그 값이 정답인지 아닌지 체크 하는 메서드
(정수, 문자열 )을 받는다
▶main 에서 해야될일
Scanner sc = new Scanner(System.in);
Random rand = new Random();
int num = rand.nextInt(1000)+1 ;
syso("[" + num + "] : ")
사용자가 정답을 입력할 값 받기
String name = " ";
만약 그런상황이 일어난다면
369가 들어갔을시 들어간 개수에 맞춰 짝을 출력
369라는 숫자가 포함 안되어있을시 숫자를 출력
▶ 한국어 풀이를 토대로 코딩 시작 !
import java.util.Random;
import java.util.Scanner;
public class Test03 {
public static boolean check(int num,String user) { // 정답인지 아닌지 boolean
final int NUM=num; //초기값은 변하면 안되니까 final로 설정해주기
int cnt=0; // "짝" 박수의 개수
int x=1000;
while(x>0) {
int n=num/x;
if(n==3 || n==6 || n==9) {
cnt++;
}
num=num%x; // 1234 -> 234
x=x/10;
}

디버깅표 그려보기
String ans=""; // 문자열값 초기화
for(int i=0;i<cnt;i++) { // 반복문을 통해 짝 카운트만큼 "짝" 이라고 적립
ans+="짝";
}
if(cnt==0) { // 짝이 하나도 안들어갈시에
ans=Integer.toString(NUM); // 정수에서 문자열로 int->String
} // ※같이 알기 !! 문자열에서 정수는 ? String->int는? Integer.parseInt();
System.out.println("ans: "+ans);
System.out.println("user: "+user);
if(ans.equals(user)) {// 정답과 입력한 값이 같다면 true
return true;
}
return false;
}
public static void main(String[] args) {
// int num // 그 랜덤 정수
// -> 1~1000중에서 랜덤으로 정수 1개 생성
// syso("[num] : ")
// 사용자가 입력을 시도함
// -> String user
// if(정답상황이라면,)
// syso("정답")
// else
// syso("오답")
Scanner sc=new Scanner(System.in);
Random rand=new Random();
int num=rand.nextInt(1000)+1;
System.out.print("["+num+"] : "); //1~1000까지 랜덤 정수 1개
String user=sc.next(); // 사용자에게 정답입력을 받는다
if(check(num, user)) { // 정답상황이라면,
System.out.println("정답입니다!"); // 그 숫자의 정답이 맞으면 정답
}
else {
System.out.println("오답입니다....."); // 입력한 숫자와 정답이 틀리면 오답
}
}
}
★★ 단계
1의 게임을 3번할건데,
3번 다 정답이면 이름을 입력받아서
ㅁㅁㅁ님 축하합니다!~~ 상품드리겠습니다!~~~
[19] : 짝
정답입니다!
[19] : 19
오답입니다.....
- 끝 -
[19] : 짝
정답입니다!
이름입력) 홍길동
홍길동님 축하합니다!~~ 상품드리겠습니다!~~~
★-2번에 대한 풀이 시작 !
먼저 -★ 한국어 풀이를 해보았다 !
//1의 게임을 3번 할건데
int i = 0;
while(i<3){
[1번코드]
if(오답이라면?) {
syso(오답입니다!)
break;
}
syso(정답입니다!)
i++;
} // while 중괄호
if(3번 다 정답을 맞췄다면 ?){
syso(축하합니다 이름을 입력하세요)
String name = sc.next();
syso( name + " 님 축하합니다")
▶ 한국어 풀이를 토대로 코딩 시작 !
final int LV=3; // 세번까지로 정해졌으니
int i=0;
while(i<LV) { // 3번까지 반복 , 그러나 몇번만에 3번이 통과될지 모르므로 while
int num=rand.nextInt(1000)+1;
System.out.print("["+num+"] : ");
String user=sc.next();
if(!check(num,user)) { // 오답상황이라면, -> 종료조건
System.out.println("오답입니다.....");
break;
}
System.out.println("정답입니다!");
i++;
}
if(i==LV) { // i ==3 // 3회 모두 맞힌사람
System.out.print("이름입력) ");
String name=sc.next();
System.out.println(name+"님, 축하합니다!~~");
}
★★★
명예의 전당
2의 게임을 통과한 사람들의 목록을 출력해주세요
1. 홍길동
2. 임꺽정
3. 철수
4. 영희
5. 코난
5명 찰때까지 계---속
★-3번에 대한 풀이 시작 !
먼저 -★ 한국어 풀이를 해보았다 !
// 2번 질문 (게임을 3번 하자 ) 이거 전에
for(명예의 전당에 저장된 사람의 수 만큼)
5명 등록하기로 했으니 5칸 배열 만들기
이름 저장이므로 String [] data = new String[5];
int dataCnt = 0; // 저장되는 사람의 수
while(dataCnt < data.length) { // 저장되는 사람이 배열의 크기보다 넘지 않을때까지
3번 다 통과한 사람 이름 저장
[2번 코드]
}
▶ 한국어 풀이를 토대로 코딩 시작 !
String[] data=new String[5]; // 5칸의 배열을 만들고
int dataCnt=0; // 명예의 전당에 저장된 사람의 수
while(dataCnt<data.length) { // 저장된 사람이 배열까지 찰때까지
for(int i=0;i<data.length;i++) {
System.out.println((i+1)+". "+data[i]); //몇번. 이름
}
int i=0;
while(i<3) {
int randNum=rand.nextInt(1000)+1;
System.out.print("["+randNum+"] : ");
String userAns=sc.next();
if(!check(randNum,userAns)) {
System.out.println("오답입니다.....");
break;
}
System.out.println("정답입니다!");
i++;
}
if(i==3) {
System.out.print("명예의 전당에 올릴 이름을 입력) ");
data[dataCnt]=sc.next();
System.out.println(data[dataCnt]+"님, 축하합니다! :D");
dataCnt++;
}
}
최종코드
package class07;
import java.util.Random;
import java.util.Scanner;
public class Test03 {
public static boolean check(int num,String user) {
final int NUM=num;
// final : 상수화
int cnt=0; // 박수 횟수 카운트할 변수
// 1. 진짜 정답을 만들기 String ans
//////////////////////////////////////////////////
int x=1000;
while(x>0) {
int n=num/x; // 1000인 경우, 1을 의미함
if(n==3 || n==6 || n==9) {
cnt++;
}
num%=x; // 1312인 경우, 13을 의미하게 되므로 전처리가 필수!
x/=10;
}
//////////////////////////////////////////////////
String ans="";
for(int i=0;i<cnt;i++) {
ans+="짝";
}
if(cnt==0) {
// 형변환(casting)
// 최초의 num값을 기억해줄 변수가 필요하구나!
ans=Integer.toString(NUM);
}
// 2. ans와 user를 비교
System.out.println("ans: "+ans);
System.out.println("user: "+user);
if(ans.equals(user)) {
return true;
}
return false;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Random rand=new Random();
// [2]의 게임을 시작하기전에,
// for(명예의 전당에 저장된 사람의 수만큼)
// 배열 OK! String[] data=new String[5];
String[] data=new String[5]; // 5칸의 배열을 만들고
int dataCnt=0; // 명예의 전당에 저장된 사람의 수
while(dataCnt<data.length) { // 저장된 사람이 배열까지 찰때까지
for(int i=0;i<data.length;i++) {
System.out.println((i+1)+". "+data[i]); //몇번. 이름
}
System.out.println("--------------------");
int i=0;
while(i<3) {
int randNum=rand.nextInt(1000)+1;
System.out.print("["+randNum+"] : ");
String userAns=sc.next();
if(!check(randNum,userAns)) {
System.out.println("오답입니다.....");
break;
}
System.out.println("정답입니다!");
i++;
}
if(i==3) {
System.out.print("명예의 전당에 올릴 이름을 입력) ");
data[dataCnt]=sc.next();
System.out.println(data[dataCnt]+"님, 축하합니다! :D");
dataCnt++;
}
}
}
}
'JAVA > [실습문제]' 카테고리의 다른 글
| [실습 문제] 상속 (포켓몬) (0) | 2024.04.08 |
|---|---|
| [자판기 프로그램] (0) | 2024.04.08 |
| 포켓몬 문제 ( class 만들기 ) (0) | 2024.04.08 |
| [과제] Class (0) | 2024.04.08 |
| [실습] 자동차 class를 코딩하기 (0) | 2024.04.08 |