본문 바로가기

JAVA/국비 공부

3월10일수업(구구단)

 

 

구구단을 int 2차원 배열의 값을 넣고 출력하시오.

 


public class Ex022DArray02 {

    public static void main(String[] args) {
        
        int i, j;
        //int 변수 i와 j
        int arr[][] = new int[10][10];
        //int 2차원배열은 new int [10][10]
        for (i = 1; i <= 9; i++){
            // i의 값은 1 ; i의 값이 9보다 작거나 같을때 for문을 실행; i++
            for (j = 1; j <= 9; j++){
                // j 값은 1 ; j의 값이 9보다 작거나 같을때 for문을 실행; j++
                arr[i][j] = i * j;
                //배열 i 배열 j는 i*j
                System.out.print(arr[i][j] + "\t");
                //출력해줘 i와 j배열
            }
            System.out.println();
        }

구구단은 2단부터 9단까지
        //8개의 배열이 모여있는 2차원 배열이다
        //그리고 각 배열은 1부터 9까지 곱한수가 저장되는 9칸짜리 배열이다.
        int[][] gugudan = new int[8][9];
        
        //구구단은 int 배열이 8개 모여있는 배열이므로
        //크기가 8인 것이다.
        for(int i = 0; i < gugudan.length; i++) {
            
            //구구단 = 배열이 모여 있는 배열
            // 구구단의 i번째 element = 배열
            // 그럼 gugudan[i].length하면 i번째 엘리먼트의 크기가 나오게된다.
            for(int j = 0; j < gugudan[i].length; j++) {
                //gugudan[i][j] 라고 하면
                //gugudan의 i번째 배열의 j번째 칸을 가르키게 된다.
                //그러면 우리가 거기에
                //i*j를 넣어주면 어떨까?
                //안된다
                //i: 0 ~ 7
                //j: 0 ~ 8
                
                //그렇기 때문에 해당 칸에 (i+2) *(j+1)한 결과값을 넣어야한다.
                gugudan[i][j] = ( i + 2 ) * (j + 1);
                
            }
        }
        // 출력해보자
        for(int i = 0; i < gugudan.length; i++) {
            System.out.println();
            System.out.println("---------------------------");
            System.out.println((i+2)+"단");
            for(int j = 0; j < gugudan[i].length; j++) {
                
                System.out.printf("%d * %d = %2d\n", i+2, j+1, gugudan[i][j]);
               
            }
            System.out.println("---------------------------");
        }
        
        
    }

}