chapter7 실습문제

김현우·2024년 4월 29일
0

java

목록 보기
5/12
post-thumbnail

문제

키를 관리하는 ManageHeight라는 클래스를 만들고 각 반별로 학생 키를 저장한뒤
출력한다.

코드

public class ManageHeight {
    int [][]gradeHeights;//인스턴스 변수로 일단 배열을 만들고 매소드에서 초기화 시켜줘야함.
    public static void main(String[] args) {
        ManageHeight MH=new ManageHeight();

        MH.setData();
        for(int i=1;i<=5;i++){
           // System.out.println(i);
           MH.printHeights(i);
        }
        }

    public void setData(){
        gradeHeights=new int[][]{{170,180,173,175,177}
        ,{160,165,167,186}
        ,{158,177,187,176}
        ,{173,182,181}
        ,{170,180,165,177,172}};
    
        /*
        for(int []arr:gradeHeights){
              System.out.println(arr.length);
        }// 2차원 배열에서 열의 개수가 원하는대로 나옴
        */
    }

    public void printHeights(int classNO){
        System.out.println("Class No.:"+classNO);
        for(int classHeight:gradeHeights[classNO-1]){
            System.out.println(classHeight);
        }
    }
}
// 챕터 7의 실습문제

/* 타 메소드의 변수를 사용불가함 사용하고 싶으면 인스턴스 or 클래스 변수로 만들고 사용하기 */

질문거리

Q) 문제를 풀다보니 MH.setData()를 해주지 않으면 오류가 발생했다. 왜 그런것인가?
A) 현재 문제에서는 인스턴스 변수를 밖에 선언후 setData에서는 초기화를 시켜준다.
   따라서 초기화를 하지않고 출력시에는 문제가 생간다.

Q) 처음에 setData()안에 모든 배열을 선언 및 초기화를 했는데 다른 매소드에서 사용이 불가했다 왜 그런가?
A) 매소드 안의 변수는 지역변수이기에 해당 매소드 내에서만 사용이 가능하다. 
   따라서 타 매소드에서 이용하려면 인스턴스 변수 또는 클래스변수로 선언하여 사용해야한다.
profile
학생

0개의 댓글