백지부터 시작하는 이세계 코딩 생활

배열에 대한 간단한 기본 설명 본문

JAVA/Array

배열에 대한 간단한 기본 설명

조아덕 2020. 8. 8. 17:23

public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[][] arr = new int[3][3];
		int num = 1;
		int i = 0;
		int j = 0;
		// 2차원 배열은 다중 for문으로 접근한다.
		arr[0][0] = 10;
		arr[1][1] = 22;
		arr[2][2] = 33;
		for (int r = 0; r < 3; r++) {
			for (int c = 0; c < 3; c++) {
				System.out.print(arr[r][c] + "\t");
			}
			System.out.println();
		}
	}// end main
//결과는 다음과 같다
 

행렬의 형태로 프린트 되며 각 주소지에 입력해준 값들만 프린트됨을 확인할 수 있다.


public static void main(String[] args) {
		// 배열을 선언과 동시에 초기화.
		// 1차월 배열을 배열의 요소로 사용함.
		int[][] arr = { //5행 3열 형태의 배열
				{ 90, 85, 95 }, 
				{ 91, 84, 94 }, 
				{ 92, 83, 93 }, 
				{ 93, 82, 92 }, 
				{ 94, 81, 91 }, 
				};
		// 다중 반복문(for)를 사용해서 출력.
		System.out.println("이벤트 1,2,3");
		int Input = 0;
		Scanner sc = new Scanner(System.in);
		Input = sc.nextInt();
		switch (Input) { // 여러가지 표현 방법.
		case 1:
			System.out.println("event 1");
			for (int i = 0; i < 5; i++) {
				for (int j = 0; j < 3; j++) {
					System.out.print(arr[i][j] + "\t");		//5행3열 형태로 프린트.
				}
				System.out.println();
			}System.out.println();
			//break;
		case 2:
			System.out.println("event 2");
			for (int i = 0; i < 5; i++) {
				for (int j = 0; j < arr[i].length; j++) { 	// case 1 과 같은결과, 다른방식.
					System.out.print(arr[i][j] + "\t");
				}
				System.out.println();
			}
			System.out.println();
			//break;
		case 3:
			System.out.println("event3");
			for (int i = 0; i < 3; i++) { // 다중문 연산 순서에는 영향없음. 다만 나열 순서를 고려한다면 생각해줘야함.
				for (int j = 0; j < 5; j++) { // i,j 연산에 따른 각각의 요소 값들에는 변화없음.
					System.out.print(arr[j][i] + "\t"); // 그러나 당연히 행,렬 위치가 바뀌면 해당 위치의 값도 달라짐.
				}
				System.out.println();
			}
			break;
		}// end switch
결과확인
 


public static void ex3(String[] args) { // 함수호출
		main(args);
	}
	public static void main(String[] args) { // 함수선언
		// 지역변수
		// int[행][렬] arr = new int[가로][세로];
		// int num = 1;
		// *참고* : 멤버필드에 int[행][렬] arr = new int[가로][세로]; 은 5행5열로 초기화되어있다.
		
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {	//범위를 숫자 대신 배열의 길이로 대체한 방법.
				arr[i][j] += num++;
				System.out.print(arr[i][j]+"\t");
			}
			System.out.println();
		}
	}// end main

결과확인
 


public static void main(String[] args) {
		// 다중 for문을 이용해서 아래와 같이 프린트.
		// 1 6 11 16 21
		// 2 7 12 17 22
		// 3 8 13 18 23
		// 4 9 14 19 24
		// 5 10 15 20 25
		int r = 0;
		int c = 0;
		for (c = 0; c < arr.length; c++) { // 행 row (가로, 좌우)
			for (r = 0; r < arr.length; r++) { // 열 column (세로, 상하)
				arr[c][r] = num++; // 증가 방향이 column 순서로.
			}
		}
		System.out.println();
		for(c=0; c<arr.length; c++) {
			for(r=0; r<arr.length; r++) {
				System.out.print(arr[r][c]+"\t");
			}
			System.out.println();
		}
		
	}// end main

결과확인
 


 
<세로출력 추가내용>
결과확인
 

public static void main(String[] args) {
		// 다중 for문을 이용해서 아래와 같이 프린트.
		// 1 6 11 16 21
		// 2 7 12 17 22
		// 3 8 13 18 23
		// 4 9 14 19 24
		// 5 10 15 20 25
		int r = 0;
		int c = 0;
		for (c = 0; c < arr.length; c++) { 			
			for (r = 0; r < arr.length; r++) { 		
				arr[c][r] = num++; 		
				System.out.print(arr[r][c]+"\t");	
			}
			System.out.println();
		}
		System.out.println();
		for(c=0; c<arr.length; c++) {
			for(r=0; r<arr.length; r++) {
				System.out.print(arr[r][c]+"\t");
			}
			System.out.println();
		}
	}// end main

보면, 첫번째 2중 루프에서는 0이 반환되는 부분이 있음을 알 수 있다. 이는 반복이 될 때, 후열증감에 의해 마지막 반환값은 5가 아닌 6이기 때문. 따라서 다시 루프가 돌 때 조건에 어긋난 부분은 0이 프린트 된다. 하지만 루프는 계속 돌기 때문에 값이 증가하고, 때문에 원하는 위치에 원하는 값이 프린트 된다. 그러므로 0이 프린트 되는 것을 보완하기 위해 2중 루프문을 한번 더 사용했다.


public static void main(String[] args) {
		// 0 대신 공백으로 프린트.
		// 1 2 3 4 5
		// 6 7 8 9 0
		// 10 11 12 0 0
		// 13 14 0 0 0
		// 15 0 0 0 0
		// 5행 54321열
		int i = 0; // 행
		int j = 0; // 열
		for (i = 0; i < 5; i++) {			//5행 5열로 시작한다.
			for (j = 0; j < 5 - i; j++) {	//열은 하나씩 줄여나간다.
											
//일일이 처리해주는 것 보다 행값이 1씩 증가함을 이용해 줄 값 마다 빼주는 형식으로 처리함.
		arr[i][j] = num++;
		System.out.print(arr[i][j] + "\t"); 
// *주의 : arr[i][j]에 index 순서가 달라지면 에러가 나거나 예상과 다른 결과가 프린트된다.
			}
			System.out.println();
		}
	}// end main

결과확인
 


public static void main(String[] args) {
		// 0 대신 공백처리로 프린트.
		// 1
		// 2 3
		// 4 5 6
		// 7 8 9 10
		// 11 12 13 14 15
		// int [][]arr = new int[5][5];
		// 해당 주소에 입력값을 넣을 수 없을 때 0이 반환되는 것을 이용, 이를 다시 공백으로 프린트하여 처리.
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < i + 1; j++) {
				arr[i][j] = num++;
				System.out.print(arr[i][j] + "\t");
			}
			System.out.println();
		}
	}// end main

결과확인
 

 
public static void main(String[] args) {
//index
// 0	1	2	3     4

// 1				 //[0.0] [0.1] [0.2] [0.3] [0.4]
// 3 2				 //[1.0] [1.1] [1.2] [1.3] [1.4]
// 6 5 4			 //[2.0] [2.1] [2.2] [2.3] [2.4]
// 10 9 8 7			 //[3.0] [3.1] [3.2] [3.3] [3.4]
// 15 14 13 12 11		//[4.0] [4.1] [4.2] [4.3] [4.4]


		int i = 0;
		int j = 0;
		for (i = 0; i < 5; i++) {
			for (j = 4; j >=4 - i; j--) {
				arr[i][j] = num++;								//해당 주소지에 num 변수가 갖는 값이 매칭되는 원리.
				System.out.print(arr[i][j]+"\t");
			}
			System.out.println();
		}
	}// end main
결과확인
 



<내용>

- 배열 원리 이해

- 배열 사용 연습

// 배열의 요소를 한번에 프린트 하는 방법 : Arrays.toString

// index는 배열 내의 저장공간 주소를 뜻한다.

// 배열 길이가 너무 커서 일일이 컨트롤하기 어려울 때 쓰는 코드 : .length (문자열 길이를 리턴함.)

// toString()을 사용 ? : 배열의 주소값을 사용함. 그래서 요상하게 프린트됨.

// Arrays.toString()을 사용 ?  : 배열의 내용을 사용함, 배열속 문자형을 프린트하기 위해 사용.

// 문자형 변수를 사용하려 할 때 : maxName = null 은 NullPointerException 발생.
따라서 maxName = " "; 처리로 해줘야 함.

// arr[]= array[ index ] 에서 index 부분에 해당되는 주소지의 해당 값이 추출되는 원리


// 배열은 그저 묶어둔 것이고 index(그 주소)에 해당하는 값을 사용하는 원리임.


배열에 담긴 내용을 받아와서 응용하는 방법

배열에 값 할당하는 방법 1.

배열에 값 할당하는 방법 2.

배열 크기 정해주는 방법.

배열 크기 만큼 값을 받아오는 방법 with 반복문

배열과 반복문

 

 

 

 

원본 저장하기

 

'JAVA > Array' 카테고리의 다른 글

이번 년도 남은 날짜 계산하기  (0) 2020.08.08
Comments