Study/Academy
[Study #06] 2차원 배열
PEAZH
2023. 6. 14. 19:18
반응형
01. 2차원 배열
- 배열 속에 배열이 있는 형태
- 값들이 행과 열로 구성되어 있는 배열로, 가로 인덱스와 세로 인덱스를 사용
- 기본 형식 : int[][] scores = new int[2][3]
[ 예시 ]
package jun09;
public class MultiArray01 {
public static void main(String[] args) {
int[] arr01 = new int[5];//1차원 배열
int[][] arr02 = new int [5][5];//2차원 배열 = 5칸 안에 5칸이 또 있음
//데이터 입력
arr01[0] = 100;
arr02[0][0] = 100;//[집][방번호]
//마지막집, 마지막 방에 1000을 저장하기
arr02[4][4] = 1000;
//index 2, index 마지막 방에 55를 저장하기
arr02[2][4] = 55;
// 객체의 주소 출력
System.out.println(arr02[0]);
System.out.println(arr02[1]);
System.out.println(arr02[2]);
System.out.println(arr02[3]);
System.out.println(arr02[4]);
int[][] arr03 = new int[2][3]; //6칸
System.out.println(arr03.length);//2
System.out.println(arr03[0].length);//3
int[] temp = arr03[0];//int타입의 배열을 arr03[0]을 넣는다
System.out.println(temp.length);//3
}
}
02. 2차원 배열 출력 방법
[ 방법 1 ] for문 이용하기 : for문을 겹쳐서 배열[i][j] 로 출력
package jun09;
public class MultiArray01 {
public static void main(String[] args) {
int[][] arr01 = new int [5][5];//2차원 배열 = 5칸 안에 5칸이 또 있음
// 2차원 배열 출력
for (int i = 0; i < arr01.length; i++) {
for (int j = 0; j < arr01.length; j++) {//length가 같아서 똑같이 써도 됨
System.out.print(arr02[i][j]+" ");
}
System.out.println("");
}
// 0 0 0 0 0
// 0 0 0 0 0
// 0 0 0 0 0
// 0 0 0 0 0
// 0 0 0 0 0
int[][] arr02 = new int[2][3]; //6칸
for (int i = 0; i < arr02.length; i++) {//바깥쪽 배열
// 길이가 다를땐 arr02[i].length 이렇게 써줘야 함
for (int j = 0; j < arr02[i].length; j++) {//안쪽 배열
System.out.print(arr03[i][j]+" ");
}
System.out.println("");
}
// 0 0 0
// 0 0 0
}
}
[ 방법 2 ] for-each문 이용하기 : 2차원의 배열을 1차원 배열에 차례로 넣어서 출력하기
package jun09;
import java.util.Arrays;
public class MultiArray {
public static void main(String[] args) {
//배열 생성
int[][] arr01 = new int[5][5];
int num = 1;
//배열 값 넣기
for (int i = 0; i < arr01.length; i++) {
for (int j = 0; j < arr01.length; j++) {
arr01[i][j] = num++;
}
}
// 출력 방법 (1)
// arr01 배열을 is 배열에 하나씩 넣기
for (int[] is : arr01) {
// is를 i에 하나씩 넣기
for (int i : is) {
// 출력
System.out.print(i + " ");
}
}
// 출력 방법 (2)
for (int[] is : arr01) {
System.out.println(Arrays.toString(is));
}
}
}// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
03. 2차원 배열 활용하기
[ Q1. N자 만들기 ]
package jun09;
import java.util.Arrays;
import java.util.Scanner;
public class MultiArray {
public static void main(String[] args) {
int[][] arr01 = new int[7][7];
/*
* [0,0,0,0,0,0,0] [0,0,0,0,0,0,0] [0,0,0,0,0,0,0] [0,0,0,0,0,0,0]
* [0,0,0,0,0,0,0] [0,0,0,0,0,0,0] [0,0,0,0,0,0,0]
*/
int num = 1;
for (int i = 0; i < arr01.length; i++) {
arr01[i][0] = num;
arr01[i][6] = num;
arr01[i][i] = num;
System.out.println(Arrays.toString(arr01[i]));
}
}
}
// [1, 0, 0, 0, 0, 0, 1]
// [1, 1, 0, 0, 0, 0, 1]
// [1, 0, 1, 0, 0, 0, 1]
// [1, 0, 0, 1, 0, 0, 1]
// [1, 0, 0, 0, 1, 0, 1]
// [1, 0, 0, 0, 0, 1, 1]
// [1, 0, 0, 0, 0, 0, 1]
[ Q2. 입력받은 숫자 크기만큼 N자 만들기 ]
package jun09;
import java.util.Scanner;
public class MultiArray04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("홀수 숫자를 입력하세요 : ");
int num = sc.nextInt();
char[][] nArt = new char[num][num];// num은 사용자로부터 입력받은 숫자
for (int i = 0; i < nArt.length; i++) {
for (int j = 0; j < nArt[i].length; j++) {
if (i == j || j == 0 || j == nArt.length - 1) {
nArt[i][j] = 'N';
} else {
nArt[i][j] = ' ';
}
System.out.print(nArt[i][j] + " ");
}
System.out.println("");
}
sc.close();
}
}// 4를 입력했다면
// N N
// N N N
// N N N
// N N
[ Q3. 3 x 3 1부터 9 채우기 ]
package jun09;
import java.util.Arrays;
public class MultiArray {
public static void main(String[] args) {
int s = 0;
int[][] arr01 = new int[3][3];
for (int i = 0; i < arr01.length; i++) {
for (int j = 0; j < arr01.length; j++) {
s = s + 1;
arr01[i][j] = s;
}
System.out.println(Arrays.toString(arr01[i]));
}
}
}
// [1, 2, 3]
// [4, 5, 6]
// [7, 8, 9]
[ Q4. 3 x 3 배열 랜덤으로 중복 없이 1부터 9 채우기 ]
package jun09;
import java.util.Arrays;
public class Samsam{
public static void main(String[] args) {
int[][] sam = new int[3][3];
//입력
for (int i = 0; i < sam.length; i++) {
for (int j = 0; j < sam[i].length; j++) {
sam[i][j] = (int) (Math.random() * 9 + 1);
if (sam[i][j] == sam[i][j]) {
sam[i][j] = (int) (Math.random() * 9 + 1);
}
}
}
//출력
for (int[] is : sam) {
System.out.println(Arrays.toString(is));
}
}
}
[ Q5. 사용자에게 값 5개 받고 배열로 출력하기 ]
package jun09;
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
//arr01 = 100;//이렇게 저장 안됨 (번지수가 필요함)
int[] arr01 = new int[5];
//사용자가 점수를 입력 하면 arr01에 저장하고 출력
Scanner sc = new Scanner(System.in);
for (int i = 0; i < arr01.length; i++) {//5개 입력 받기
System.out.print("점수를 입력하세요 : ");
arr01[i] = sc.nextInt();
}
// 출력 방법 (1)
System.out.println(Arrays.toString(arr01));//[50, 20, 30, 50, 10]
// 출력 방법 (2)
for (int i = 0; i < arr01.length; i++) {
System.out.println(arr01[i]);
}
// 50
// 20
// 30
// 50
// 10
// 출력 방법 (3)
for (int i : arr01) {
System.out.println(i);
} System.out.println(arr01[i]); 위랑 같은 말임
// 50
// 20
// 30
// 50
// 10
//닫기
sc.close();
}
}
[ Q6. 로또 번호 45개 중에 6개 랜덤으로 뽑기 ]
package jun09;
public class Test {
public static void main(String[] args) {
int[] arr01 = new int[6];
for (int i = 0; i < arr01.length; i++) {
System.out.print((int) (Math.random() * 45) + 1);// 실행할 때마다 값이 계속 바뀜
System.out.print("\n");
}
// 1~25중 하나만 뽑기
System.out.println((int) (Math.random() * 25) + 1);
}
}
참고자료
신용권, '혼자 공부하는 자바'
반응형