3x5 배열
0,0 0,1 0,2 0,3 0,4
1,0 1,1 1,2 1,3 1,4
2,0 2,1 2,2 2,3 2,4
int[][] arr = new int[3][5];
*[]: 첨자라고 부름
3x5 배열에 1로 채우기
int[][] arr = new int[3][5];
for(int i=0; i<3; i++) {
for(int j=0; j<5; j++) {
arr[i][j] = 1;
}
}
for(int i=0; i<3; i++) {
for(int j=0; j<5; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println("");
}

int[][] arr = new int[3][5];
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);

2차원 배열의 주소
*arr @[[I@1f32e575 → ㅁㅁㅁ
ㄴarr[0] @[I@279f2327 → ㅁㅁㅁㅁㅁ
ㄴarr[1] @[I@2ff4acd0 → ㅁㅁㅁㅁㅁ
ㄴarr[2] @[I@54bedef2 → ㅁㅁㅁㅁㅁ
[예제] 5x5 정수 행렬(board)
1. 프로그램 시작 시 자동으로 1이라는 숫자가 5곳에만 저장
*랜덤수로 좌표값을 찾아 돌린다.
2. 5x5배열에 1이 5개 숨어있다. 찾아라!
3. 행, 열 번호를 받아서 유무 확인 후 결과 출력
4. 5개를 다 찾으면 게임 종료
5. 결과 출력
package ex01;
import java.util.*;
public class Test0314 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] board = new int[5][5];
int[][] copy_board = new int[5][5];
// 랜덤 입력 변수
Random rd = new Random();
int idx = 0;
int row;
int col;
int cnt = 0; // 맞은 개수
// 사용자 입력 변수
int inputRow;
int inputCol;
int inputCnt = 0;
// board 행렬에 1을 5개 추가하기
while(idx<5) {
row = rd.nextInt(5);
col = rd.nextInt(5);
// 중복 제거
if(board[row][col]==1)
continue;
else {
board[row][col] = 1;
copy_board[row][col] = 1;
idx++;
}
}
System.out.println("5x5 행렬에 1이 5개 숨어있다. 찾아라!");
/*
// board 값 출력
for(int i=0; i<5; i++) {
for(int j=0; j<5; j++) {
System.out.print(board[i][j]+" ");
}
System.out.println("");
}
*/
Scanner sc = new Scanner(System.in);
while(cnt<5) {
System.out.println("행을 입력하세요");
inputRow = sc.nextInt();
System.out.println("열을 입력하세요");
inputCol = sc.nextInt();
inputCnt++;
for(int i=0; i<5; i++) {
for(int j=0; j<5; j++) {
if(board[inputRow][inputCol]==1) {
System.out.println("정답입니다.");
cnt++;
board[inputRow][inputCol]=0; // 맞추면 해당 값은 0으로 만들어야함.
}else
continue;
}
}
}
System.out.println("*******************");
System.out.println("종료합니다.");
System.out.println("도전 횟수: " + inputCnt);
System.out.println("---정답 BOARD---");
// copy_board 값 출력
for(int i=0; i<5; i++) {
for(int j=0; j<5; j++) {
System.out.print(copy_board[i][j]+" ");
}
System.out.println("");
}
System.out.println("-----------정답 위치값------------");
// 위치 값 출력
for(int i=0; i<5; i++) {
for(int j=0; j<5; j++) {
if(copy_board[i][j]==1)
System.out.print("["+i+","+j+"]"+" ");
}
}
System.out.println("");
System.out.println("-------------------------------");
}
}


[예제]
5x5 배열에 아래와 같이 입력해라.
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25
package ex01;
public class Test0314_2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] arr = new int[5][5];
int idx = 1;
for(int i=0; i<5; i++) {
if(i%2==0) {
for(int j=0; j<5; j++) {
arr[i][j] = idx;
idx++;
}
}
else {
for(int j=4; j>=0; j--) {
arr[i][j] = idx;
idx++;
}
}
}
for(int i=0; i<5; i++) {
for(int j=0; j<5; j++)
System.out.print(arr[i][j]+" ");
System.out.println("");
}
}
}

[예제] 4x4 배열에 성적관리
국 영 수 총점
학생1 100 90 80 270
학생2 90 50 60 200
학생3 60 40 70 170
총 점 250 180 210 640
1번째 학생의 국0.0, 영0.1, 수0.2 점수 입력 받기 총점 계산 후 입력 0.3
2번째 학생의 국1.0, 영1.1, 수1.2 점수 입력 받기 총점 계산 후 입력 1.3
3번째 학생의 국2.0, 영2.1, 수2.2 점수 입력 받기 총점 계산 후 입력 2.3
총점 입력하기 국3.0, 영3.1, 수3.2 점수 합쳐서 총점 계산 후 입력 3.3
Scanner sc = new Scanner(System.in);
String[] subject = {"국어","영어","수학"};
int[][] grr = new int[4][4];
int grade;
int sum=0;
int total=0;
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
System.out.println((i+1)+"번째 학생의 "+subject[j]+"점수를 입력하세요");
grade = sc.nextInt();
grr[i][j] = grade;
sum+=grade;
}
grr[i][subject.length] = sum;
total+=sum;
sum=0;
}
grr[3][3]=total;
int sum2=0;
for(int i=0; i<student; i++) {
for(int z=0; z<subject.length; z++) {
sum2+=grr[z][i];
}
grr[student][i] = sum2;
sum2=0;
}
// 배열 출력 확인
for(int i=0; i<4; i++) {
for(int j=0; j<4; j++) {
System.out.print(grr[i][j]+" ");
}
System.out.println("");
}

<변형> 학생수와 과목을 쉽게 변경하게 하기 위해 변수명을 사용했다.
학생 수는 별도로 받고, 과목은 subject에서 추가가 가능하다.
// 성적관리 프로그램
Scanner sc = new Scanner(System.in);
System.out.println("학생 수를 입력하세요");
int student = sc.nextInt();
String[] subject = {"국어","영어","수학"};
int[][] grr = new int[student+1][subject.length+1];
int grade;
int sum=0;
int total=0;
for(int i=0; i<student; i++) {
for(int j=0; j<subject.length; j++) {
System.out.println((i+1)+"번째 학생의 "+subject[j]+"점수를 입력하세요");
grade = sc.nextInt();
grr[i][j] = grade;
sum+=grade;
}
grr[i][subject.length] = sum;
total+=sum;
sum=0;
}
grr[student][subject.length]=total;
int sum2=0;
for(int i=0; i<subject.length; i++) {
for(int z=0; z<student; z++) {
sum2+=grr[z][i];
}
grr[student][i] = sum2;
sum2=0;
}
// 배열 출력 확인
for(int i=0; i<student+1; i++) {
for(int j=0; j<subject.length+1; j++) {
System.out.print(grr[i][j]+" ");
}
System.out.println("");
}
