본문 바로가기

카테고리 없음

Array 배열 성적 계산기

 


* 배열 


         :: 같은 데이터형을 갖는 변수들의 집합
         >> 배열변수에 접근은 index로 접근가능(index는 0부터 시작)
         >> index pattern과 data pattern을 활용
         >> data pattern이 존재 >> 저장, 호출 반복문을 사용
         >> data pattern이 존재 X >> 호출시 반복문 사용
 
        1. new 연산자를 사용하여 heap에 할당
         >> int[] i = new int[5];
         >> Array.length 현재 배열로 선언된 변수의 갯수

        2. 선언과 동시에 초기값을 지정
 


성적 계산기 만들기 


Array.java

 

package array;

public class Array {

    public static void main(String[] args) throws java.io.IOException {
        /* 성명 반 번호 국어 수학 영어 과학 사회 총점 평균 평점
         * 개인정보 배열 선언
         * 과목 배열 선언
         */
        INOUT io = new INOUT();
        J_Array arr = new J_Array(io.comments,io.item);
        io.Output(arr.Result());
    }
}

 

그림 1.

 


INOUT.java

 

/*
 *  입 출력을 전담하는 클래스
 *   1. 프로그램 타이틀 출력
 *   2. 입력기능
 *   3. 출력기능
 */

 

package array;

 

import java.util.Scanner;
import java.io.IOException;

 

public class INOUT {
    //1차원 배열
    public String[] comments = {"성명", "반", "번호", "국어", "수학", "영어", "과학", "사회", "총점", "평균", "평점"};
    public String[] item = new String[11];
    private Scanner sc = new Scanner(System.in);
   
    public INOUT() throws IOException{
        // 생성자 >> 인스턴스 변수의 초기화
        Output(Title());
       
        for(int i=0; i<item.length-3; i++){
            Output(comments[i] + " : ");
            item[i] = ReadData();
        }
    }

    private String Title(){
        String title = "";
       
        title += "----------------------------------------------------------\n";
        title += "                        성적 계산기\n";
        title += "----------------------------------------------------------\n";
        return title;
    }
   
    private String ReadData() throws IOException{
        return sc.nextLine();      
    }
   
    private void Output(String o){
        System.out.print(o);
    }
   
    public void Output1(){
        System.out.println();
    }
   
    public void Output(String [][] results){ //J_Array.java에 result값을 넘겨온것임
        System.out.println(Title());
       
        int cnt = 0;
        while(true){
        for(int i = 0; i < 11; i++){
            System.out.print("\t"+results[cnt][i]);
                }
                    cnt++;
                 if ( cnt >= 2 ){break;}
                 System.out.println();
             }
        Output1();
        }
}

 

그림 2.


 J_Arrary.java

 

package array;

public class J_Array {
        public String [] comments, item;
       
        public J_Array(String [] comm, String it[]){ //초기값 지정해주는
            comments = comm;
            item = it;  
            Evalue();
        }
       
        private int Sum(){ //합계 구하는 메서드
            int tot = 0;
            for(int i = 3; i < 8; i++ ){
                tot += Integer.parseInt(item[i]);
            }
            item[8] = String.valueOf(tot);
            return tot;
        }
       
        private float Avg(){ //평균 구하는 메서드 총점 / 과목갯수 5
            float avg = 0.00f;
            avg = Sum() / 5f;
            item[9] = String.valueOf(avg);
            return avg;
        }
       
        private void Evalue(){ //평점 구하는 방식
            float a = Avg();
            int e = (int)(a/10);
           
            String ev;
            switch(e){
                case 10 : ev = "A";  break;
                case 9 :  ev = "A";  break;
                case 8 :  ev = "B";  break;
                case 7 :  ev = "C";  break;
                case 6 :  ev = "D";  break;
                default : ev = "F";
               
            }
            item[10] = ev;
        }
       
        public String[][] Result(){
            String[][] results = {comments,item};
            return results;
        }
}

 

그림 3.