오늘은 숙제 1개만 내주셨다... 하지만 나에겐 어려운걸요... 최선을 다해 해보는데까지 하는걸로,,,,,
수업시간에 하려던 문제가 숙제로 넘어가서 숙제가 2개다 음하하하핳
[문제 1] 덧셈 계산 (while, 다중 for)
- 10 ~ 99 사이의 난수를 2개 발생하여 합을 구하는 프로그램
- 5문제를 제공한다.
- 1문제당 점수 20점씩 처리한다.
- 틀리면 1번 더 기회를 주고, 2번 다 틀리면 답을 알려준다.
- y 또는 n은 대소문자 상관없다.
- y, Y, n, N이 입력이 안 되면 계속 반복한다.
[실행결과]
[1] 25 + 36 = 50
틀렸다
[1] 25 + 36 = 59
틀렸다 정답은 xx
[2] 10 + 25 = 35
딩동뎅
[5] 78 + 95 = 89
틀렸다
[5] 78 + 95 = 173
딩동뎅
당신은 총 x 문제를 맞추어서 점수 xx점 입니다.
또 할래(Y/N) : A
또 할래(Y/N) : w
또 할래(Y/N) : n
프로그램을 종료합니다.
package for_;
import java.util.Scanner;
public class AddGame {
public static void main(String[] args) {
int a, b;
int dab, answer, score=0;
int count=0; //맞았는지 틀렸는지 카운트
String yn;
Scanner scan = new Scanner(System.in);
while(true) {
for(int i=1; i<=5; i++) {
a = (int)(Math.random() * 90) + 10;
b = (int)(Math.random() * 90) + 10;
dab = a + b;
System.out.print("[" + i + "] " + a + " + " + b + " = ");
answer = scan.nextInt();
if(dab == answer) {
System.out.println("딩동댕");
score += 20;
count++;
}else {
System.out.println("틀렸다.");
System.out.print("[" + i + "] " + a + " + " + b + " = ");
answer = scan.nextInt();
if (answer == dab) {
System.out.println("딩동댕");
score += 20;
count++;
} else {
System.out.println("틀렸다 정답은 " + dab);
}
}
}
System.out.println("당신은 총 " + count + "문제를 맞추어서 점수 " + score + "점 입니다.");
System.out.print("또 할래(Y/N): ");
yn = scan.next();
while (!(yn.equalsIgnoreCase("y") || yn.equalsIgnoreCase("n"))) {
System.out.print("또 할래(Y/N): ");
yn = scan.next();
}
if (yn.equalsIgnoreCase("n")) {
System.out.println("프로그램을 종료합니다.");
break;
}
}
scan.close();
}
}
[1] 51 + 13 = 64
딩동댕
[2] 81 + 54 = 50
틀렸다.
[2] 81 + 54 = 50
틀렸다 정답은 135
[3] 29 + 44 = 73
딩동댕
[4] 48 + 70 = 118
딩동댕
[5] 50 + 28 = 78
딩동댕
당신은 총 4문제를 맞추어서 점수 80점 입니다.
또 할래(Y/N): n
프로그램을 종료합니다.
수정 완료!! 강사님이랑 답 맞춰보고 틀린부분이 없길,,,,
[강사님 답]
public class AddGame {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int a, b;
int dab;
int count;
String yn;
while(true) {
count = 0; //초기화
for(int i=1; i<=5; i++) { //5문제
a = (int)(Math.random()*90 + 10); //10 ~ 99
b = (int)(Math.random()*90 + 10); //10 ~ 99
for(int j=1; j<=2; j++) { //틀리면 1번 더 기회
System.out.print("[" + i + "] " + a + " + " + b + " = ");
dab = scan.nextInt();
if(dab == a+b) {
System.out.println("정답입니다.");
count++;
break; //for j 벗어나라
}else {
if(j == 2) System.out.println("오답입니다. 정답은 " + (a+b)); //2번 다 틀렸을 경우
else System.out.println("오답입니다.");
}
}//for j
System.out.println();
}//for i
System.out.println();
System.out.println("당신은 총 " + count + "문제를 맞추어서 점수 " + count*20 + "점 입니다.");
System.out.println();
do {
System.out.print("또 할래(Y/N) : ");
yn = scan.next();
}while(!yn.equals("Y") && !yn.equals("y") && !yn.equals("N") && !yn.equals("n"));
if(yn.equals("N") || yn.equals("n")) break; //while 벗어나라
}//while
System.out.println("프로그램을 종료합니다.");
}
}
강사님이 알려주신 답이랑 내 답이랑 약간씩 다르다. 고치면 좋은 부분도 있지만 내 코드가 틀린거 아니니 ! 나름 뿌듯 ㅎ.ㅎ
[문제 2] 2단 ~ 9단까지 3개씩 끊어서 출력하시오
- 3중 for, if
[실행결과]
존재하지 않는 이미지입니다.
사진 설명을 입력하세요.
MultiFor04.java
package multiFor;
public class MultiFor04 {
public static void main(String[] arg) {
int dan, i, w;
for(w=2; w<=8; w+=3) { //w=1, w=2, w=3 또는 w=2, w=5, w=8 (3씩 증가)
for(i=1; i<=9; i++) {
for(dan=w; dan<=w+2; dan++) {
// 2 4
// 5 7
// 8 10
if(dan != 10)
System.out.print(dan + "*" + i + "=" + dan*i +"\t");
}//for dan
System.out.println();
}//for i
System.out.println();
}//for w
}
}
2*1=2 3*1=3 4*1=4
2*2=4 3*2=6 4*2=8
2*3=6 3*3=9 4*3=12
2*4=8 3*4=12 4*4=16
2*5=10 3*5=15 4*5=20
2*6=12 3*6=18 4*6=24
2*7=14 3*7=21 4*7=28
2*8=16 3*8=24 4*8=32
2*9=18 3*9=27 4*9=36
5*1=5 6*1=6 7*1=7
5*2=10 6*2=12 7*2=14
5*3=15 6*3=18 7*3=21
5*4=20 6*4=24 7*4=28
5*5=25 6*5=30 7*5=35
5*6=30 6*6=36 7*6=42
5*7=35 6*7=42 7*7=49
5*8=40 6*8=48 7*8=56
5*9=45 6*9=54 7*9=63
8*1=8 9*1=9
8*2=16 9*2=18
8*3=24 9*3=27
8*4=32 9*4=36
8*5=40 9*5=45
8*6=48 9*6=54
8*7=56 9*7=63
8*8=64 9*8=72
8*9=72 9*9=81
이 문제는 간단해보였지만 꽤나 헤맸던 문제이다.... 주석처럼 적어보면서 수식을 적는 것도 하나의 방법이라고 하셨다. 이 코드를 완벽히 이해하기 위해 하나하나 적어가면서 복습해보자.
for(w=2; w<=8; w+=3) {
이 반복문은 w를 2부터 시작하여 8까지 반복한다. 각 반복에서는 w 값이 3씩 증가한다.
즉, w는 2, 5, 8의 값을 갖게 된다. 이는 구구단 그룹의 시작 단을 의미한다.
for(i=1; i<=9; i++) {
이 반복문은 각 단의 곱해지는 수인 i를 1부터 9까지 반복한다.
for(dan=w; dan<=w+2; dan++) {
이 반복문은 현재 그룹의 세 개의 단을 반복한다. dan은 w부터 w+2까지의 값을 가진다.
예를 들어, w가 2일 때 dan은 2, 3, 4가 된다.
- w = 2일 때: 2, 3, 4 단을 출력
- w = 5일 때: 5, 6, 7 단을 출력
- w = 8일 때: 8, 9 단을 출력
'HOMEWORK' 카테고리의 다른 글
DAY 2 - HOMEWORK (0) | 2024.08.13 |
---|---|
DAY 3 - HOMEWORK - 숫자 순서대로 출력 / 가위바위보 (2024.07.05) (0) | 2024.08.13 |
DAY5 - HOMEWORK - 주차장 관리 프로그램 (2024.07.09) (0) | 2024.08.13 |
DAY 6 - HOMEWORK - 성적 처리 프로그램 / 성적계산 (2024.07.10) (0) | 2024.08.13 |
DAY 8 - HOMEWORK 치환 / 사지선다형 (2024.07.12) (0) | 2024.08.12 |