티스토리 뷰

반응형

 

 

12일차 챌린지를 시작해보자.

 

Day 12 결과

 

 

 

금일 문제는 조금 헷갈려 필자도

다음의 사이트를 참고해 작성했다.

https://zetawiki.com/wiki/HR30_Day_12:_Inheritance

 

HR30 Day 12: Inheritance - 제타위키

다음 문자열 포함...

zetawiki.com

 

 

기존에 코드의 틀이 작성되어 있고

상속받는 생성자만 만들어주면 되는 문제였는데

강의를 듣기 전에 풀다보니 생성자 만드는 부분에서

조금 헷갈렸고

 

평균의 경우 필자가 생각한 방법으로는 for문에

합계를 저장한 변수가 sum이고

과목 개수를 저장한 변수가 numScores라면

avg = sum/numScores

이런식으로 문제를 풀었을 텐데

 

생성자가 따로 선언되어 있으니

저장된 값을 어떻게 받아와야 할지 몰랐다.

 

결국 위 사이트를 참고하니

double acg = Arrays.stream(this.testScores).average().getAsDouble();

 

위와 같이 받아올 수 있다는 것을 알게 되었다.

 

 

따라서 최종 코드는 다음과 같다.

package day12;

import java.util.Arrays;
import java.util.Scanner;

class Person {
    protected String firstName;
    protected String lastName;
    protected int idNumber;

    Person(String firstName, String lastName, int identification) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.idNumber = identification;
    }

    public void printPerson() {
        System.out.println(
                "Name: " + lastName + ", " + firstName
                        + "\nID: " + idNumber);
    }
}

class Student extends Person {
    private int[] testScores;

    Student(String firstName, String lastName, int id, int[] scores) {
        super(firstName, lastName, id);
        this.testScores = scores;
    }

    char calculate() {
        double avg = Arrays.stream(this.testScores).average().getAsDouble();
        if (avg > 90) return 'O';
        if (avg >= 80) return 'E';
        if (avg >= 70) return 'A';
        if (avg >= 55) return 'P';
        if (avg >= 40) return 'D';
        return 'T';
    }
}

class Solution {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String firstName = scan.next();
        String lastName = scan.next();
        int id = scan.nextInt();
        int numScores = scan.nextInt();
        int[] testScores = new int[numScores];
        for (int i = 0; i < numScores; i++) {
            testScores[i] = scan.nextInt();
        }
        scan.close();

        Student s = new Student(firstName, lastName, id, testScores);
        s.printPerson();
        System.out.println("Grade: " + s.calculate());
    }
}

 

 


 

필자도 해매다 인터넷의 도움을 받은 문제였지만

강의를 통해 생성자 만드는 법을 학습하고

double acg = Arrays.stream(this.testScores).average().getAsDouble();

다음의 문장만 잘 작성했따면 어렵지 않게 풀 수 있었던 문제라고 생각한다.

 

그럼 내일 Day 13 챌린지를 통해 만나자!

반응형