이것이 자바다 5장 확인문제풀이

김용진·2025년 3월 4일
0

Coffe_Time

목록 보기
3/3
package ch05.sec06;

import java.util.Scanner;

public class Exam {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		System.out.println("------------------------------------------------------------------------------------");
		System.out.println("예제 7번");
		// 예제 7번
		// 주어진 배열에서 최대 값을 도출하는 코드
		int[] array = { 1, 5, 3, 8, 2 };
		int answer = 0; // 결과값 저장할 곳

		for (int i = 0; i < array.length; ++i) {
			boolean bettwen = (answer < array[i]); // anwser 이 더작으면 true를 반환

			if (bettwen) {
				answer = array[i]; // 작을 경우 anwser에 array 값을 집어넣음
			}
		}
		System.out.println(answer); // 반복문 나온 뒤 답 도출
		System.out.println("------------------------------------------------------------------------------------");
		System.out.println("예제 8번");
		// 예제 8번 주어진 배열의 합과 평균 구하는 코드
		/*
		 * 해결 방안
		 */

		// 주어진 예시
		int[][] arrary = { { 95, 86 }, { 83, 92, 96 }, { 78, 83, 93, 87, 88 } };

		int count = 0; // 값이 존재하는 길이 카운트
		int total_score = 0; // 총합
		double avg_score = 0.0; // 평균

		// 반복문
		for (int i = 0; i < arrary.length; i++) {
			// 전체 합
			for (int j = 0; j < arrary[i].length; j++) {
				total_score += arrary[i][j];
			}
			count += arrary[i].length;
		}

		// double 캐스팅
		avg_score = (double) total_score / count;

		System.out.println("전체 합 : " + total_score);
		System.out.println("평균 	: " + avg_score);
		System.out.println("------------------------------------------------------------------------------------");
		System.out.println("예제 9번");
		// 예제 9번
		// 주어진 배열 항목에 전체 합과 평균을 구해 출력하는 코드

		/*
		 * 학생 점수를 입력받아 값을 저장하고 분석하는 프로그램 while문과 Scanner의 nextLine() 함수를 이용하자 최고 점수 및 평균
		 * 점수를 출력하자
		 */

		// 문자열로 입력 될 경우 에러가 뜨기때문에 추후 개선 필요
		Scanner sc = new Scanner(System.in); // 스캐너 객체 생성

		int sel = 0; // 선택
		int student_count = 0; // 학생 수
		int[] scores = null; // 학생 점수 저장 배열
		int topScore = 0; // 학생 최고점
		int total = 0; // 전체 점수
		Double avg = 0.0; // 평균 점수

		// 프로그램 시작
		program: while (true) {
			System.out.println("-----------------------------------------------------------");
			System.out.println("1. 학생수 | 2. 점수입력 | 3. 점수리스트 | 4. 분석 | 5. 종료");
			System.out.println("-----------------------------------------------------------");
			System.out.print("선택> ");
			sel = Integer.parseInt(sc.nextLine()); // 원하는 버튼 선택

			switch (sel) {
			case 1: {
				System.out.print("학생수> ");
				student_count = Integer.parseInt(sc.nextLine());
				scores = new int[student_count]; // 학생 몇명 있는지 값을 받아 배열 크기 설정
				break;
			}
			case 2: {
				// 학생 점수 입력 반복문
				for (int i = 0; i < student_count; i++) {
					System.out.print("scores[" + i + "]> ");
					scores[i] = Integer.parseInt(sc.nextLine());
				}
				break;
			}
			case 3: {
				// 점수 출력 반복문
				for (int i = 0; i < scores.length; i++) {
					System.out.println("scores[" + i + "]> " + scores[i]);
				}
				break;
			}
			case 4: {
				// 토탈 점수
				for (var score : scores) {
					total += score;
					if (topScore < score) {
						topScore = score;
					}
				}
				// 평균 점수 double casting
				avg = (double) total / student_count;

				System.out.println("최고 점수: " + topScore);
				System.out.printf("평균 점수: %.1f%n", avg);
				break;
			}
			case 5: {
				// 프로그램 올 스탑, 스캐너 메서드 종료
				System.out.println("프로그램 종료");
				sc.close();
				break program;
			}
			default: {
				// 선택지 제외 다른 숫자 오류 표기
				System.out.println("선택지에 맞게 다시 선택해 주세요");
			}
			}

		}

	}
}

코드 리뷰를 주석에 달아만든 코드, 차후 개선 사항을 밑에 추가해야한다.

profile
메모리폼

0개의 댓글