문제
키를 관리하는 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++){
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}};
}
public void printHeights(int classNO){
System.out.println("Class No.:"+classNO);
for(int classHeight:gradeHeights[classNO-1]){
System.out.println(classHeight);
}
}
}
질문거리
Q) 문제를 풀다보니 MH.setData()를 해주지 않으면 오류가 발생했다. 왜 그런것인가?
A) 현재 문제에서는 인스턴스 변수를 밖에 선언후 setData에서는 초기화를 시켜준다.
따라서 초기화를 하지않고 출력시에는 문제가 생간다.
Q) 처음에 setData()안에 모든 배열을 선언 및 초기화를 했는데 다른 매소드에서 사용이 불가했다 왜 그런가?
A) 매소드 안의 변수는 지역변수이기에 해당 매소드 내에서만 사용이 가능하다.
따라서 타 매소드에서 이용하려면 인스턴스 변수 또는 클래스변수로 선언하여 사용해야한다.