JAVA/연습문제
쉽게 배우는 자바 프로그래밍 2판 5장 도전문제
세언이
2022. 10. 13. 15:20
반응형

# 개발 공부하는 초보자가 작성한 답안이니 정답이 아닐 수 있습니다!!!
1. 학생 수와 점수를 입력하면 각 학생의 성적을 출력하는 프로그램을 작성해보자.
1-1. 학생 수와 점수를 위한 배열 변수를 선언한다. 그리고 Scanner 클래스도 선언해서 키보드로 데이터를 받을 준비를 한다.
📢주어진 값📢
int numOfStudents = 0;
int scores[];
Scanner inScanner = new Scanner(System.in);
1-2. 키보드로 학생 수를 입력받고 입력된 학생 수에 해당하는 크기의 scores 배열을 생성한다.
📢주어진 값📢
numOfStudents = inScanner.nextInt();
scores = ______________;
1-3. for 문을 이용해 학생 수만큼 키보드로 성적을 입력받은 후 출력하도록 한다. 그리고 프로그램을 실행한 후 결과를 확인한다.
📢주어진 값📢
System.out.println(numOfStudents + "명의 학생 성적을 입력하세요.");
for (int i = 0; i < scores.length; i++) {
// 키보드 값을 배열에 대입하는 코드
System.out.println(numOfStudents + "명의 학생 성적은 다음과 같습니다.");
for (int i = 0; i < scores.length; i++) {
// 배열 원소를 출력하는 코드
}
🧤정답🧤
public static void main(String[] args) {
int numOfStudents = 0;
int scoreOfStudents = 0;
int scores[];
Scanner inScanner = new Scanner(System.in);
System.out.printf("학생 수? ");
numOfStudents = inScanner.nextInt();
scores = new int[numOfStudents];
System.out.println(numOfStudents + "명의 학생 성적을 입력하세요.");
for (int i = 0; i < scores.length; i++) {
scoreOfStudents = inScanner.nextInt();
scores[i] = scoreOfStudents;
System.out.println(scores[i]);
}
System.out.println(numOfStudents + "명의 학생 성적은 다음과 같습니다.");
for (int i = 0; i < scores.length; i++) {
System.out.print(scores[i] + " ");
}
}
}
2. 1번의 프로그램을 for문과 if~else문을 사용해 학생들의 등급을 출력하는 프로그램으로 확장해보자. 그리고 이번에는 for~each 문도 사용해보자.
2-1. 1번 코드에서 for~each 문으로 사용할 수 있는 곳은 바꿔본다.
🧤정답🧤
public static void main(String[] args) {
int numOfStudents = 0;
int scoreOfStudents = 0;
int scores[];
Scanner inScanner = new Scanner(System.in);
System.out.printf("학생 수? ");
numOfStudents = inScanner.nextInt();
scores = new int[numOfStudents];
System.out.println(numOfStudents + "명의 학생 성적을 입력하세요.");
for (int i = 0; i < scores.length; i++) {
scoreOfStudents = inScanner.nextInt();
scores[i] = scoreOfStudents;
System.out.println(scores[i]);
}
System.out.println(numOfStudents + "명의 학생 성적은 다음과 같습니다.");
for (int i : scores) {
System.out.print(i + " ");
}
}
}
2-2. 1번에서 작성한 프로그램에서 메인 메서드의 마지막에 다음과 같은 for문을 추가한다.
📢주어진 값📢
for (int i = 0; _________; i++){
}
2-3. if~else문을 사용해 scores 배열의 각 원소에 대하여 점수 구간별로 등급을 출력하는 코드를 추가한다. 그리고 프로그램을 실행한 후 결과를 확인한다.
📢주어진 값📢
if (______________)
System.out.println((i + 1) + "번 학생의 등급은 A입니다.");
else if
...
🧤정답🧤
public static void main(String[] args) {
int numOfStudents = 0;
int scoreOfStudents = 0;
int scores[];
int scores2[];
Scanner inScanner = new Scanner(System.in);
System.out.printf("학생 수? ");
numOfStudents = inScanner.nextInt();
scores = new int[numOfStudents];
scores2 = new int[numOfStudents];
System.out.println(numOfStudents + "명의 학생 성적을 입력하세요.");
for (int i = 0; i < scores.length; i++) {
scoreOfStudents = inScanner.nextInt();
scores[i] = scoreOfStudents;
}
System.out.println(numOfStudents + "명의 학생 성적은 다음과 같습니다.");
for (int i = 0; i < scores.length; i++) {
System.out.print(scores[i] + " ");
}
System.out.println();
for (int i = 0; i < scores2.length; i++) {
scores2[i] = i;
}
for (int i : scores2) {
if (scores[i] >= 90) {
System.out.println((i + 1) + "번 학생의 등급은 A입니다.");
} else if (scores[i] >= 80) {
System.out.println((i + 1) + "번 학생의 등급은 B입니다.");
} else if (scores[i] >= 70) {
System.out.println((i + 1) + "번 학생의 등급은 C입니다.");
} else if (scores[i] >= 60) {
System.out.println((i + 1) + "번 학생의 등급은 D입니다.");
} else {
System.out.println((i + 1) + "번 학생의 등급은 E입니다.");
}
}
}
}
3. 2의 프로그램에서 등급에 대한 내용을 열거 타입을 사용하여 수정해보자.
3-1. 2번 코드에서 다음과 같은 내용을 열거 타입으로 추가한다.
📢주어진 값📢
A는 최우수
B는 우수
C는 보통
D는 미흡
E는 탈락
3-2. 2번 코드에서 학생의 성적에 대한 등급을 화면에 나타낼 때 A혹은 B와 같은 등급 대신에 '최우수'. '우수' 등으로 나타나도록 수정하라. 그리고 프로그램을 실행한 후 다음 결과처럼 나타나는지 확인하라.
🧤정답🧤
public enum Grade {
A("최우수"), B("우수"), C("보통"), D("미흡"), E("탈락");
private String s;
private Grade(String s) {
this.s = s;
}
public String toString() {
return s;
}
}
public static void main(String[] args) {
int numOfStudents = 0;
int scoreOfStudents = 0;
int scores[];
Grade grade;
Scanner inScanner = new Scanner(System.in);
System.out.printf("학생 수? ");
numOfStudents = inScanner.nextInt();
scores = new int[numOfStudents];
System.out.println(numOfStudents + "명의 학생 성적을 입력하세요.");
for (int i = 0; i < scores.length; i++) {
scoreOfStudents = inScanner.nextInt();
scores[i] = scoreOfStudents;
}
System.out.println(numOfStudents + "명의 학생 성적은 다음과 같습니다.");
for (int i = 0; i < scores.length; i++) {
System.out.print(scores[i] + " ");
}
System.out.println();
for (int i = 0; i < scores.length; i++) {
if (scores[i] >= 90) {
grade = Grade.valueOf("A");
System.out.println((i + 1) + "번 학생의 등급은 " + grade + "입니다.");
} else if (scores[i] >= 80) {
grade = Grade.valueOf("B");
System.out.println((i + 1) + "번 학생의 등급은 " + grade + "입니다.");
} else if (scores[i] >= 70) {
grade = Grade.valueOf("C");
System.out.println((i + 1) + "번 학생의 등급은 " + grade + "입니다.");
} else if (scores[i] >= 60) {
grade = Grade.valueOf("D");
System.out.println((i + 1) + "번 학생의 등급은 " + grade + "입니다.");
} else {
grade = Grade.valueOf("E");
System.out.println((i + 1) + "번 학생의 등급은 " + grade + "입니다.");
}
}
}
}
반응형