자바 배열 선언방법에 대해 궁금합니다

조회수 2301회

ragged array을 선언(gradeHeights)한 다음 배열에 값을 입력(setData)하는 코드입니다.

int[][] gradeHeights = new int[5][];까지는 문제가 없는데 그 아래로 2차원 배열의 길이를 지정하면 계속해서 문제가 생깁니다.

import java.util.Scanner;

public class ManagerHeight {
    Scanner scan = new Scanner(System.in);

    public static void main(String[] args){
        ManagerHeight manager = new ManagerHeight();
        manager.setData(manager.gradeHeights);
    }
    int[][] gradeHeights = new int[5][];

    gradeHeights[0] = new int[5];
    gradeHeights[1] = new int[4];
    gradeHeights[2] = new int[4];
    gradeHeights[3] = new int[3];
    gradeHeights[4] = new int[5];

    public void setData(int[][] clss){
        for(int i=0; i<4; i++){
            for(int k=0; k<gradeHeights[i].length; k++){
                System.out.println(1+i+"반 "+(1+k)+"번 학생의 키는?");
                clss[i][k] = scan.nextInt();
            }
        }
    }
}

1 답변

  • 좋아요

    2

    싫어요
    채택 취소하기
    gradeHeights[0] = new int[5];
    gradeHeights[1] = new int[4];
    gradeHeights[2] = new int[4];
    gradeHeights[3] = new int[3];
    gradeHeights[4] = new int[5];
    

    이부분을 setData 메소드 안에 넣어보세요. new로 할당한 객체에 메소드바깥영역에서 접근하는건 불가능합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 감사합니다! Snark 2016.6.5 16:37

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)