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 + "입니다.");
			}
		}
	}
}
반응형