백지부터 시작하는 이세계 코딩 생활
배열에 대한 간단한 기본 설명 본문

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