ver.3 has-a 관계 이용하여 학생 정보 출력 

 

has- a : 포함 관계. ~는 ~을 가지고 있다. 포함하고 있다는 의미

 

사용자에게 학생 수 입력 받기

입력 받은 수 만큼 반복하여 학생 이름, 성적 입력받기

전체 학생과 성적, 합계, 평균 출

 

 

 

 

 

 

 

 

 

 

ArrayHasA 클래스는 학생 Student를 포함하고 있어 Has-a 관계가 성립된다.

 

import java.util.Scanner;

 

public class ArrayHasA {

    

    StudentScore []student;                            //StudentScore 클래스를 배열로 받아옴

    int index;                                        //입력한 학생 인원 수 받음

    

    ArrayHasA(int index) {                            //생성자 : 인덱스로 받음

        student=new StudentScore[index];            //

        this.index = index;

        loading();

    }

    

    void loading() {                                

        for(int i = 0; i <student.length;i++) {

            student[i]=new StudentScore();        //생성자 부르자 마자 인덱스 값으로 StudentSccore 객체 생성

            student[i].setInput();                //학생 정보 입력

            student[i].getAvg();                //평균 구하기

        }

        

    }

    

    void setStudent(StudentScore []ae) {

        this.student = ae;

    }

    

    void setIndex(int index) {

        this.index = index;

    }

    

    StudentScore[] getStudent() {

        return this.student;

    }

    

    int getIndex() {

        return this.index;

    }

        

    void printer(){//출력하기 위한 메소드

        for (int i = 0; i < student.length; i++) {                    //student index 크기만큼 돌림

            System.out.print(student[i].name +"\t");            

            for (int j = 0; j < student[i].score.length; j++) {        //StudentScore 의 인덱스 크기만큼 돌림

                System.out.print(student[i].score[j]+"\t");

            }

            

            System.out.print(student[i].avg);

            System.out.println();

        }    

        

        

    }

 

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        

        Scanner sc = new Scanner(System.in);

        System.out.println("몇명의 학생 정보를 입력하시겠습니까? ");

        ArrayHasA ah = new ArrayHasA(sc.nextInt());        //입력할 학생 정보 scanner로 받음

        

        System.out.println("-------------성적 출력---------------");        

        

        ah.printer();                                    //성적 출력 메소드 활용

    }

 

}

 

 

class StudentScore {

    

    String name;                    //이름

    int []score;                    //점수(국어, 영어, 수학, 총점)

    float avg;                        //평균

    

    StudentScore(){                    //생성자

        score=new int[4];            

    }

    

    StudentScore(String name, int []score, float avg){

        this.score = score;            //초기화

        this.name = name;            //이름

        this.avg = avg;                //평균

    }

    

    public void setName(String name) {

        this.name = name;

    }

    

    public void setScore(int[] arr) {

        this.score=arr;

    }

    

    public void setAvg(float avg) {

        this.avg = avg;

    }

    

    public String getName() {

        return this.name;

    }

    

    public int[] getScore() {

        return this.score;

    }

    

    public float getAvg() {                //float 형태로 평균 구함

        this.avg = (float)score[3]/3;

        return avg;

    }

    

    void setInput() {                        //사용자 이름과 성적 입력 메소드

        Scanner sc = new Scanner(System.in);

        

        System.out.print("이름을 입력하세요 : ");

        this.name = sc.next();

    

        System.out.println("성적을 입력하세요 (국어, 수학, 영어 성적 순):");

        score[3]=0;

        

        for(int i = 0; i < score.length-1;i++) {        //for 반복하여 숫자 입력

            this.score[i]= sc.nextInt();

            this.score[3+= score[i];

        }

        

        

    }

}

    

 

 

Colored by Color Scripter

'JAVA' 카테고리의 다른 글

추상화 예제  (0) 2019.06.18
상속 예제_extends, super, Override  (0) 2019.06.18
배열 예제_이름과 성적 출력  (0) 2019.06.18
배열 예제_2차원 배열  (0) 2019.06.18
배열 예제_숫자 출력  (0) 2019.06.18

+ Recent posts