Java에서 2차원 배열을 만들기 위한 구문
고려사항:
int[][] multD = new int[5][];
multD[0] = new int[10];
이렇게 하면 5행 10열의 2차원 배열을 만들 수 있습니까?
인터넷에서 이 코드를 봤는데 구문이 말이 안 돼요.
다음을 시도해 보십시오.
int[][] multi = new int[5][10];
...이렇게 짧은 손입니다.
int[][] multi = new int[5][];
multi[0] = new int[10];
multi[1] = new int[10];
multi[2] = new int[10];
multi[3] = new int[10];
multi[4] = new int[10];
됩니다.int
,0
따라서 위의 내용은 다음과 같습니다.
int[][] multi = new int[][]{
{ 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, 0 }
};
2차원 배열을 선언하고 선언 시 요소를 다음과 같이 직접 저장할 수 있습니다.
int marks[][]={{50,60,55,67,70},{62,65,70,70,81},{72,66,77,80,69}};
여기서 int는 배열에 저장된 정수형 요소를 나타내며 배열 이름은 '마크'입니다.배열은 동일한 데이터 유형을 가진 요소의 집합이므로 int는 "{" 및 "}" 중괄호 안에 표시되는 모든 요소의 데이터 유형입니다.
위에 기재된 설명으로 돌아가겠습니다.요소의 각 행은 중괄호 안에 기입해야 합니다.각 행의 행과 요소는 쉼표로 구분해야 합니다.
이제 3개의 행과 5개의 열이 있으므로 JVM은 3 * 5 = 15개의 메모리 블록을 생성합니다.이러한 블록은 개별적으로 다음과 같이 칭할 수 있습니다.
marks[0][0] marks[0][1] marks[0][2] marks[0][3] marks[0][4]
marks[1][0] marks[1][1] marks[1][2] marks[1][3] marks[1][4]
marks[2][0] marks[2][1] marks[2][2] marks[2][3] marks[2][4]
n개의 요소를 저장하는 경우 배열 인덱스는 0에서 시작하여 n-1로 끝납니다.2차원 어레이를 작성하는 또 다른 방법은 먼저 어레이를 선언한 후 새로운 연산자를 사용하여 어레이에 메모리를 할당하는 것입니다.
int marks[][]; // declare marks array
marks = new int[3][5]; // allocate memory for storing 15 elements
위의 두 가지를 조합하면 다음과 같이 쓸 수 있습니다.
int marks[][] = new int[3][5];
다른 사람이 언급한 대로 만들 수 있습니다.하나 더 추가할 점:각 행에 대해 기울어진 2차원 배열을 만들 수도 있지만, 반드시 콜럼 수가 같을 필요는 없습니다.
int array[][] = new int[3][];
array[0] = new int[3];
array[1] = new int[2];
array[2] = new int[5];
5행 10열의 2차원 배열을 작성하는 가장 일반적인 관용구는 다음과 같습니다.
int[][] multD = new int[5][10];
또는 각 행을 명시적으로 초기화해야 하지만 기존 행과 더 유사한 다음 명령을 사용할 수도 있습니다.
int[][] multD = new int[5][];
for (int i = 0; i < 5; i++) {
multD[i] = new int[10];
}
다음과 같이 선언할 수도 있습니다.좋은 디자인은 아니지만 작동은 해요.
int[] twoDimIntArray[] = new int[5][10];
시험:
int[][] multD = new int[5][10];
코드에서는 2D 배열의 첫 번째 줄만 0으로 초기화됩니다.2호선부터 5호선까지는 존재하지도 않아요.★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.null
모두를 위해서요
int [][] twoDim = new int [5][5];
int a = (twoDim.length);//5
int b = (twoDim[0].length);//5
for(int i = 0; i < a; i++){ // 1 2 3 4 5
for(int j = 0; j <b; j++) { // 1 2 3 4 5
int x = (i+1)*(j+1);
twoDim[i][j] = x;
if (x<10) {
System.out.print(" " + x + " ");
} else {
System.out.print(x + " ");
}
}//end of for J
System.out.println();
}//end of for i
자바에서는 2차원 배열을 1차원 배열과 동일하게 선언할 수 있다.1차원 배열에서는 다음과 같이 쓸 수 있습니다.
int array[] = new int[5];
여기서 int는 데이터 유형, array[]는 어레이 선언입니다.new array
는 오브젝트가 5개의 인덱스를 가진 배열입니다.
이렇게 2차원 배열을 다음과 같이 쓸 수 있습니다.
int array[][];
array = new int[3][4];
여기서array
는 int 데이터형입니다.먼저 그 타입의 1차원 배열을 선언하고 나서, 3행 4열 배열을 작성합니다.
고객님의 코드로
int[][] multD = new int[5][];
multD[0] = new int[10];
5개의 행이 있는 2차원 배열을 작성했음을 의미합니다.첫 번째 행에는 10개의 열이 있습니다.Java에서는 각 행의 열 크기를 원하는 대로 선택할 수 있습니다.
int rows = 5;
int cols = 10;
int[] multD = new int[rows * cols];
for (int r = 0; r < rows; r++)
{
for (int c = 0; c < cols; c++)
{
int index = r * cols + c;
multD[index] = index * 2;
}
}
맛있게 드세요!
다음과 같이 시도해 보십시오.
int a[][] = {{1,2}, {3,4}};
int b[] = {1, 2, 3, 4};
Java에서는 다음과 같은 어레이를 들쭉날쭉한 어레이라고 부릅니다.
int[][] multD = new int[3][];
multD[0] = new int[3];
multD[1] = new int[2];
multD[2] = new int[5];
이 시나리오에서는 배열의 각 행에 서로 다른 수의 열이 포함됩니다.위의 예에서 첫 번째 행에는 세 개의 열이, 두 번째 행에는 두 개의 열이, 세 번째 행에는 다섯 개의 열이 포함됩니다.이 어레이는 다음과 같이 컴파일 시에 초기화할 수 있습니다.
int[][] multD = {{2, 4, 1}, {6, 8}, {7, 3, 6, 5, 1}};
어레이 내의 모든 요소를 쉽게 반복할 수 있습니다.
for (int i = 0; i<multD.length; i++) {
for (int j = 0; j<multD[i].length; j++) {
System.out.print(multD[i][j] + "\t");
}
System.out.println();
}
사실 자바에는 수학적 의미의 다차원 배열이 없습니다.Java에는 어레이의 배열이 있습니다.각 요소가 어레이이기도 한 어레이입니다.그렇기 때문에 초기화를 위한 절대 요건은 첫 번째 치수의 크기입니다.나머지를 지정하면 기본값으로 채워진 배열이 생성됩니다.
int[][] ar = new int[2][];
int[][][] ar = new int[2][][];
int[][] ar = new int[2][2]; // 2x2 array with zeros
그것은 또한 우리에게 별난 것을 준다.하위 배열의 크기는 요소를 추가하여 변경할 수 없지만 임의 크기의 새 배열을 할당하여 변경할 수 있습니다.
int[][] ar = new int[2][2];
ar[1][3] = 10; // index out of bound
ar[1] = new int[] {1,2,3,4,5,6}; // works
동적이고 유연한 것(열과 행을 추가하거나 삭제할 수 있는 것)을 원하는 경우 "ArrayList of ArrayList"를 사용해 보십시오.
public static void main(String[] args) {
ArrayList<ArrayList<String>> arrayListOfArrayList = new ArrayList<>();
arrayListOfArrayList.add(new ArrayList<>(List.of("First", "Second", "Third")));
arrayListOfArrayList.add(new ArrayList<>(List.of("Fourth", "Fifth", "Sixth")));
arrayListOfArrayList.add(new ArrayList<>(List.of("Seventh", "Eighth", "Ninth")));
arrayListOfArrayList.add(new ArrayList<>(List.of("Tenth", "Eleventh", "Twelfth")));
displayArrayOfArray(arrayListOfArrayList);
addNewColumn(arrayListOfArrayList);
displayArrayOfArray(arrayListOfArrayList);
arrayListOfArrayList.remove(2);
displayArrayOfArray(arrayListOfArrayList);
}
private static void displayArrayOfArray(ArrayList<ArrayList<String>> arrayListOfArrayList) {
for (int row = 0; row < arrayListOfArrayList.size(); row++) {
for (int col = 0; col < arrayListOfArrayList.get(row).size(); col++) {
System.out.printf("%-10s", arrayListOfArrayList.get(row).get(col));
}
System.out.println("");
}
System.out.println("");
}
private static void addNewColumn(ArrayList<ArrayList<String>> arrayListOfArrayList) {
for (int row = 0; row < arrayListOfArrayList.size(); row++) {
arrayListOfArrayList.get(row).add("added" + row);
}
}
출력:
First Second Third
Fourth Fifth Sixth
Seventh Eighth Ninth
Tenth Eleventh Twelfth
First Second Third added0
Fourth Fifth Sixth added1
Seventh Eighth Ninth added2
Tenth Eleventh Twelfth added3
First Second Third added0
Fourth Fifth Sixth added1
Tenth Eleventh Twelfth added3
언급URL : https://stackoverflow.com/questions/12231453/syntax-for-creating-a-two-dimensional-array-in-java
'programing' 카테고리의 다른 글
null 끝 문자열의 근거는 무엇입니까? (0) | 2022.08.16 |
---|---|
포인터를 사용하여 다른 함수에서 로컬 변수에 액세스하는 방법 (0) | 2022.08.16 |
'JSON.stringify'를 쓰면 Vue 구성 요소가 로드될 때 오류가 발생합니다. (0) | 2022.08.15 |
C코드('외부 C' 필요)가 C++로 컴파일 되어 있는지 여부를 검출하는 방법 (0) | 2022.08.15 |
Vue2에서 동적 $refs 값을 가져오는 중 (0) | 2022.08.15 |