2013-03-30 2 views
1

Matlab의 기능을 사용하여 행렬을 만들 수 있으며 A[i][j]과 같은 것을 얻을 수 있습니다. 이제 Java를 사용하고 있으며 1 차원 배열 만 사용할 수 있습니다. 엔트리 (i : 행과 j : 열)를 중첩 for 루프를 사용하여 수정한다고 가정하고 있지만, 1D 배열에 저장되어있는 경우 액세스하는 방법을 모르겠습니다. 누군가 나를 도울 수 있습니까? 얼마나 어렵습니까? 자바에서, 당신은 또한 지금과 같은 2 차원 배열을 사용할 수배열을 1D 만 사용하는 경우 행 및 열을 얻는 방법

+1

왜 1D 배열 만 사용할 수 있습니까? – Octahedron

+0

예 [] 배열 만 double []입니다. 불행히도 그러한 이중 [] [] 배열은 없습니다. –

+1

Java 다차원 배열은 배열의 배열입니다. –

답변

4
int rows = 3; 
int cols = 4; 
int[] array = new int[rows*cols]; 
int[] currentRow = new int[cols]; 
for (int i = 0; i < rows; ++i) { 
    for (int j = 0; j < cols; ++j) { 
     currentRow[j] = array[i*cols + j]; 
    } 
} 
+0

흥미로운 것은이 것을 시도 할 것입니다! 모두에게 감사드립니다 ... –

+0

나는 실수를했고, 지금 바로 잡았습니다. –

+0

그것은 훌륭하게 일했습니다. 여러분과 다른 모든 사람들에게 감사드립니다. 누군가 내 질문에 -1이 무엇인지 말해 줄 수 있습니까? 그런 일을 피하고 싶습니다. 그래서 제가 잘못한 것을 알고 싶습니다. ... –

1

참고 : 2 차원 배열을 표현하는 1D 배열을 사용하는 경우, 지금

int[][] my2DArr = new int[4][3]; //creates a 2D array with 4 rows and 3 columns 
int value = my2DArr[2][1]; //gets the value at row 2 and column 1 

을, 당신은 몇 가지 간단한 수학에 대한 작업을 수행 할 수 있습니다 열 개수와 행 수를 알고있는 경우 주어진 행, 열 쌍의 위치를 ​​찾습니다. 여기를 참조하십시오 : Convert a 2D array into a 1D array

1

내가 올바르게 이해하고있어 바랍니다.

10x10 2D 배열이 있고 1 차원이되기를 원한다고합시다.

배열 [0]에서 배열 [9]까지 2D 배열의 첫 번째 행을 만들 수 있습니다. 그런 다음 배열 [10]에서 배열 [19]까지는 2D 배열의 두 번째 행입니다.

아마 이렇게하는 것이 더 효율적입니다.

5
private int getElem(int[] arr, int i, int j){ 
    return arr[i*colNum+j]; 
} 
1

컴퓨터를 추적 모든 배열 때문에 그들이 (- K.N.King 현대 접근 C 프로그래밍) 저장되는 순차적 메모리 위치의 1D이다. 그래서 당신은 2 차원 배열과 같은 1 차원 배열을 사용하려는 경우, 간단하게이 작업을 수행 : (예를 String 배열 사용) 등이다

String str[] = {"a", "b", "c", "d", "e", "f"}; 

: 얼마나 많은 행과

String str[][] = {{"a", "b", "c"}, {"d", "e", "f"}}; 

그래서 당신이 지정할 수 있습니다 열이 수동으로 이므로 위의 str[][]에는 2 행 3 열 또는 숫자의 다른 순열이 있습니다 (1 및 6, 3 및 2, 6 및 1).

int rows = 2; 
int cols = (str.length/rows); 
for (int i = 0; i < rows*cols; i+=cols) 
    for (int j = 0; j < cols; j++) 
     System.out.println(str[(i + j)]); 

을 당신이 원하는 코드로 println()를 교체하고 난 당신의 행 변수가 작업중인 얼마나 많은 행이 그대로 j는 항상 한 행과 열 위치에있을 것입니다 + : 간단하게 다음과 같이 코드를 작성 .

관련 문제