예를 들어서 국어성적을 여러개 저장하기 위한 큰 저장소를 만든다고 가정하자.

int[] kors1 int[] kors2 int[] kors3

kors[30] -> kors1 (0번) kors[31] -> kors1 (크게 3칸씩 1번) kors[3*2] -> kors1 (크게 3칸씩 2번가는것)

kors

kors[0] = kors[30 +0] -> kors[0][0] kors[1] = kors[30 +1] -> kors[0][1] kors[2] = kors[31 +2] -> kors[0][2] kors[3] = kors[31 +0] -> kors[1][0] kors[4] = kors[31 +1] -> kors[1][1] kors[5] = kors[31 +2] -> kors[1][2] kors[6] = kors[32 +0] -> kors[2][0] kors[7] = kors[32 +1] -> kors[2][1] kors[8] = kors[3*2 +2] -> kors[2][2]

오.. 이렇게 보니까 이해가 잘된다.

int[][] kors = new int[3][3]
-> 세개짜리 학년이 3개가필요하다. 총 9개 int 배열을 만들고, 두개로 나눠쓸수있게하겠다.

예제) 다차원배열 이해를 돕기위해 표현식을 쓰지않은 예시이다.

import java.util.Scanner;

public class Test_1 {

	public static void main(String[] args) {
		int[] kors = new int[3*3];   //두개 차원인지모를수있기때문에 곱하기 꼭넣어줘야함.
		int menu;
		int total;
		float avg;
		
		for(int j = 0; j<3; j++)
			for(int i= 0 ; i<3; i++)
				kors[3*j+i] =0;
		
		종료 :
		while(true) {
			Scanner s= new Scanner(System.in);
			System.out.println("┌──────────────────────┐");
			System.out.println("│        메인 메뉴               │");
			System.out.println("└──────────────────────┘");
			System.out.println("\t1.성적 입력");
			System.out.println("\t2.성적 출력");
			System.out.println("\t3.종료");
			System.out.print("\t선택 >");
			menu =s.nextInt();
			
			switch(menu)  {
			case 1: 
			
				// ------ 성적 입력 부분
				System.out.println("┌──────────────────────┐");
				System.out.println("│        성적 입력               │");
				System.out.println("└──────────────────────┘");
				
				
				for(int j= 0 ;j<3 ; j++)
					for(int i= 0 ; i<3 ; i++)
						do {
							System.out.printf("%d학년 국어 %d:",j+1, i+1);
							kors[3*j+i] = s.nextInt();
							
							if(kors[3*j+i] <0 || 100<kors[3*j+i] )
								System.out.println("성적범위(0~100)를 벗어났습니다.");
						}while(kors[3*j+i] <0 || 100<kors[3*j+i] );
				
				
				break;
			// ----------------성적 출력부분
			case 2:
				System.out.println("┌──────────────────────┐");
				System.out.println("│        성적 출력               │");
				System.out.println("└──────────────────────┘");
				
				
				for(int j= 0 ;j<3 ; j++) {
				
				total = kors[3*j+0]+kors[3*j+1]+kors[3*j+2];
				avg = total/3.0f;
				
				System.out.printf("<%d 학년의 국어성적> ------\n",j+1);
				
					for(int i = 0 ; i<3; i++)
							System.out.printf("\t국어%d : %3d\n",i+1, kors[3*j+i]);
								
						System.out.printf("\t총점 : %3d\n",   total);
						System.out.printf("\t평균 : %6.2f\n", avg);
						System.out.println("──────────────────────────────");
								
				}			
				
				break;
			
				
			case 3:
				break 종료;
			default:
				System.out.println("입력오류 1~3번까지만 입력할수있습니다.");
			}
		}
		System.out.println("good bye");
	}
}

예시) 다차원의 표현식을 사용한 예시이다. 위와 비교하면 엄청 간편한걸 알수있다.

import java.util.Scanner;

public class Test_1 {

	public static void main(String[] args) {
		int[][] kors =new int[3][3];
		int menu;
		int total;
		float avg;
		
		for(int j = 0; j<3; j++)
			for(int i= 0 ; i<3; i++)
				kors[j][i] = 0;
		종료 :
		while(true) {
			Scanner s= new Scanner(System.in);
			System.out.println("┌──────────────────────┐");
			System.out.println("│        메인 메뉴               │");
			System.out.println("└──────────────────────┘");
			System.out.println("\t1.성적 입력");
			System.out.println("\t2.성적 출력");
			System.out.println("\t3.종료");
			System.out.print("\t선택 >");
			menu =s.nextInt();
			
			switch(menu)  {
			case 1: 
				// ------ 성적 입력 부분
				System.out.println("┌──────────────────────┐");
				System.out.println("│        성적 입력               │");
				System.out.println("└──────────────────────┘");
				
				for(int j= 0 ;j<3 ; j++)
					for(int i= 0 ; i<3 ; i++)
						do {
							System.out.printf("%d학년 국어 %d:",j+1, i+1);
							kors[j][i] = s.nextInt();
							
							if(kors[j][i]<0 || 100<kors[j][i] )
								System.out.println("성적범위(0~100)를 벗어났습니다.");
						}while(kors[j][i] <0 || 100<kors[j][i]);
				
				break;
			// ----------------성적 출력부분
			case 2:
				System.out.println("┌──────────────────────┐");
				System.out.println("│        성적 출력               │");
				System.out.println("└──────────────────────┘");
				
				
				for(int j= 0 ;j<3 ; j++) {
				
				total = kors[j][0]+kors[j][1]+kors[j][2];
				avg = total/3.0f;
				
				System.out.printf("<%d 학년의 국어성적> ------\n",j+1);
				
					for(int i = 0 ; i<3; i++)
							System.out.printf("\t국어%d : %3d\n",i+1, kors[j][i]);
								
						System.out.printf("\t총점 : %3d\n",   total);
						System.out.printf("\t평균 : %6.2f\n", avg);
						System.out.println("──────────────────────────────");								
				}	

				break;							
			case 3:
				break 종료;
			default:
				System.out.println("입력오류 1~3번까지만 입력할수있습니다.");
			}
		}
		System.out.println("good bye");
	}
}

국어성적

참고 : https://youtu.be/LyRC4DQQ4SE

댓글남기기