2010-07-14 4 views
1

OK의 내가이 배열이 있다고 가정 해 봅시다 :자바 - 변경 배열

public int[][] loadBoard(int map) { 

    if (map == 1) { return new int[][] { 
{2,2,24,24,24,24,24,1,3,0,0,0,1 }, { 
2,2,24,23,23,23,24,1,3,0,0,0,1 }, { 
1,1,24,23,23,23,24,1,3,3,3,3,1 }, { 
1,1,24,24,23,24,24,1,1,1,1,3,1 }, { 
1,1,1,1,7,1,1,1,1,1,1,3,1 }, { 
6,1,1,1,7,7,7,7,7,1,1,1,1 }, { 
6,3,3,1,3,3,3,1,7,7,7,3,1 }, { 
6,72,3,3,3,1,1,1,1,7,7,1,1 }, { 
3,3,3,3,1,1,1,1,1,1,7,1,1 } }; } } 
return board; 

을하고 나는이 일을 호출 할 수 있습니다 :의 내가 수 (72)를 변경하려면 가정 해 봅시다 ...

board = loadBoard(1); 

하지만를 지도 1 배열 (배열의 왼쪽 하단)에서 숫자 ... 21. 그럴 수 있습니까?

답변

9
board[7][1] = 21; 

설명 : 갖추어 a[], a[n] 참조를 처리 할 때 제 (N + 1) 번째의 요소 (명심 제 소자 a[0]이다

다차원 배열은 단지 배열이다. 배열. 당신이 다음 b[n] 참조 (72)는 8 배열에있는 (N + 1) 배열 .

귀하의 값 (인덱스 7) 2 차원 배열 b[][]을 가지고 그래서 만약, 두 번째 위치 (인덱스 1). 따라서 board[7][1] 가치를 참조하고, board[7][1] = 21는 그것을 값을 제외하고 21

를 할당 : 때때로 당신은 당신이 작업 할 인덱스 코드를 작성할 때 (일반적으로,도) 당신이 모르는이, (당신이 원하는 말 모든지도에서 일반적으로 사용). 이 코드는 72모든 발생을 찾아 21으로 대체됩니다

int numToReplace = 72; 
int replacement = 21; 
//loop through each nested array 
for (int i = 0; i < board.length; i++) { 
    //loop through each element of the nested array 
    for (int j = 0; j < board[i].length; j++) { 
     if (board[i][j] == numToReplace) { 
     board[i][j] = replacement; 
     } 
    } 
} 
+0

당신이 그의 대답을 어떻게 얻었는지에 대한 설명을 추가해 주실 수 있습니까? –

+0

Done, thanks @SB –

+0

고마워요 - 당신의 정답이 납치당하는 것을 원치 않았습니다 :) –

2

당신이, 당신은 2 차원 배열에서 하나의 값을 식별하기 위해 두 개의 인덱스를 사용 [] []하는 int와 같은 배열을 선언 할 때 .

int[][] myarray = { 
{ a,b,c,d,... }, // 0 
{ a,b,c,d,... }, // 1 
{ a,b,c,d,....} // 2 
}; 

같이 초기화되면

은 첫 번째 인덱스의 중첩 배열 중 하나를 선택한다. (0, 1 또는 2). 그런 다음 두 번째 인덱스는 위의 중첩 배열 a, b, c, d ...에서 항목을 선택합니다.

인덱스는 항상 0부터 시작합니다. myarray [0] [0]은 배열 0에 저장된 값을 위치 a에 제공합니다. myArray [1] [3] 중첩 배열 1에서 값 'd'를 제공합니다.

예에서 숫자 72는 자연수 (1부터)를 사용하여 계수하여 두 번째 위치 인 8 번째 배열에 있습니다. 그러나 인덱스는 0부터 시작하기 때문에 인덱스가됩니다 [7] [1]. 대답은 무엇입니까.

board[7][1] = 72;