1) 국어, 영어, 수학을 입력받는 기능을 만들고,
2) 평균이 90 이상이면 수우미양가를 출력
3) GradeTest 프로그램
import java.util.Scanner;
class Grade {
int koreanScore;
int englishScore;
int mathScore;
private void setKoreanScore(int koreanScore) {
this.koreanScore = koreanScore;
}
private void setEnglishScore(int englishScore) {
this.englishScore = englishScore;
}
private void setMathScore(int mathScore) {
this.mathScore = mathScore;
}
private void printFinalScore () {
int avgScore = (koreanScore + englishScore + mathScore)/3;
String result;
if (avgScore >= 90) {
result = "수";
} else if (avgScore >= 80) {
result = "우";
} else if (avgScore >= 70) {
result = "미";
} else if (avgScore >= 60) {
result = "양";
} else {
result = "가";
}
System.out.println("최종 성적 : " + result);
}
public void run() {
System.out.println("성적 출력 프로그램을 시작합니다.");
Scanner sc = new Scanner(System.in);
System.out.println("국어 성적을 입력해주세요.");
int koreanScore = sc.nextInt();
setKoreanScore(koreanScore);
System.out.println("영어 성적을 입력해주세요.");
int englishScore = sc.nextInt();
setEnglishScore(englishScore);
System.out.println("수학 성적을 입력해주세요.");
int mathScore = sc.nextInt();
setMathScore(mathScore);
printFinalScore();
}
}
public class GradeTest {
public static void main(String[] args) {
Grade grade = new Grade();
grade.run();
}
}
⭐️ 다시 생각해볼 것
- 평균은 소수점이 나오니 double로 하는 것이 좋을 듯, 그러나 Int끼리 연산을 하면 int가 나온다.
/3.0
하면double
형이 된다.- 변수들은 다 위로 올리자.
1) 게임을 클래스로 만들기
2) 객체를 생성해서 게임이 실행될 수 있도록
import java.util.Scanner;
class UpDownGame {
public void run() {
final int COUNT = 10;
int[] arrInput;// 사용자 입력
int answer;
arrInput = new int[COUNT];
answer = (int) (Math.random() * 100 + 1);
Scanner sc = new Scanner(System.in);
for (int i = 0; i < arrInput.length; i++) {
System.out.print("숫자를 입력해주세요 : ");
int num = sc.nextInt();
if (num > answer) {
System.out.println("Down ===> " + (COUNT - i - 1) + "번 남아 있습니다.");
} else if (num < answer) {
System.out.println("Up ====> " + (COUNT - i - 1) + "번 남아 있습니다.");
} else {
System.out.println("일치");
break;
}
}
}
}
public class UpAndDownTest {
public static void main(String[] args) {
Scanner sc;
UpDownGame game;
while (true) {
try {
sc = new Scanner(System.in);
System.out.println("게임시작 1");
System.out.println("게임종료 2");
System.out.println(">>");
int num = sc.nextInt();
if (num == 1) {
game = new UpDownGame();
game.run();
} else {
System.out.println("게임을 종료합니다.");
break;
}
} catch (Exception e) {
System.out.println("잘못된 입력입니다.");
System.out.println("게임을 다시 시작 합니다.");
}
}
}
}
⭐️ 다시 생각해 볼 것
- 게임 시작할 때 숫자 초기화되도록 생성자에 넣어주자.
- 역시 변수는 다 클래스 필드로 넣어주기.
class UpDownGame2 {
private static int COUNT = 10;
private int[] arrInput;// 사용자 입력
private int answer;
public UpDownGame2() {
arrInput = new int[COUNT];
answer = (int) (Math.random() * 100 + 1);
}
public void run() {
Scanner sc = new Scanner(System.in);
try {
for (int i = 0; i < arrInput.length; i++) {
System.out.print("숫자를 입력해주세요 : ");
int num = sc.nextInt();
if (num > answer) {
System.out.println("Down ===> " + (COUNT - i - 1) + "번 남아 있습니다.");
} else if (num < answer) {
System.out.println("Up ====> " + (COUNT - i - 1) + "번 남아 있습니다.");
} else {
System.out.println("일치");
break;
}
}
} catch (Exception e) {
System.out.println("잘못된 입력입니다. 처음부터 다시 입력하세요");
run();
}
}
}