2014-01-27 2 views
1

나는 2 차원 배열을디스플레이 2D 배열

NSInteger arr [3][3] = {{0, 0, 0}, 
         {0, 0, 0}, 
         {0, 0, 0}}; 

을하고 난 엑스 코드의 명령 줄에 표시하기 위해 노력하고있어. 나는 가지고있다 :

NSLog(@"%d", arr); 

그러나 작동하지 않는다. 왜, 사용해야합니까?

+0

* C/C++ *에서와 같이 간단합니다. 루프를 작성하여 표시하십시오. –

답변

1

:

NSDictionary *dict= @{@0:@[@0,@0,@0], 
         @1:@[@0,@0,@0], 
          @2:@[@0,@0,@0]}; 

그리고 다음을 .. 내가 바로 여기에 무슨 일이 일어나고 있는지 자세하게 설명 하자 대신의를 만드는이

NSLog(@"%d",[[dict objectForKey:@1][0] intValue];) 

처럼 인쇄 2 차원 배열을 만들려면 키 값 쌍이있는 NSDictionary를 만듭니다.

여기서 NSNumber 유형 키에 대해 NSArray 유형 값을 설정합니다. 그래서 여기에 3 개의 키가 있습니다. "@ 0, @ 1 & @ 2". 각각에 대해 NSArray 오브젝트를 값으로 지정합니다. 각각 @[@0,@0,@0]입니다.

값을 인쇄 할 때 먼저 [dict objectForKey:@1]을 사용하여 해당 키에서 정확한 NSArray를 가져옵니다. 배열의 0 번째 요소를 얻으려면 [dict objectForKey:@1][0]을 사용합니다. NSArray의 각 요소로

, 여기 NSNumber 당신은 단순히 인쇄 대상 &의있는 intValue을 얻고있다.

완전한 배열 객체를 인쇄하려면 다음을 사용 :

NSLog(@"%@",[dict description]); 

업데이트 : 사용을한다면

는이 작업을 수행 NSInteger을 :

NSInteger arr [3][3] = {{0, 3, 0}, 
     {0, 0, 0}, 
     {0, 0, 0}}; 
NSLog(@"{"); 
    for(int i = 0;i<3;i++) 
    { 
     NSLog(@"{"); 
     for(int j=0;j<3;j++) 
     { 
      NSLog(@"%d, ",arr[i][j]); 
     } 
     NSLog(@"},"); 
    } 
    NSLog(@"}"); 
+0

NSDictionary가 아닌 NSInteger를 사용해야합니다. – jsollo2

+0

내가하는 일을 수행하지만 NSDictionary가 아닌 2D 배열을 만들어야합니다. 그래서 (@ "% d", ...) 사전을 인쇄하면 어떤 코드가 NSInteger 배열 [] []을 인쇄합니까? – jsollo2

+0

내 업데이트 확인 @ user1707540 –

0

현재 단일 정수가 표시됩니다. 전체 개체를 표시해야합니다. 당신은이 같은 NSDictionary 사용할 수 있습니다

1

NSLog이 방법을 모르는 원하는 방식으로 C 배열을 표시하십시오. 이렇게하려면 두 개의 중첩 된 루프이 필요합니다. 외부 루프는 첫 번째 차원 인덱스를 반복합니다. 내부 루프는 두 번째 차원 인덱스를 반복합니다. 당신은 아마 다음 (외부 루프에서) 내부 루프 후 NSLog와 함께 당신은 또한 수

을 해당 문자열을 인쇄 할 수 있습니다 외부 루프에 NSMutableString을 만들고 stringWithFormat:를 사용하여 내부 루프의 각 반복으로 추가 할 외부 루프 외부에 메인 NSMutableString을 만들고 내부 루프 이후에 각 문자열을 추가하십시오. 외부 루프 다음에 로그하십시오.

NSInteger idx1 = 3; 
NSInteger idx2 = 3; 
NSInteger arr [idx1][idx2] = {{0, 0, 0}, 
         {0, 0, 0}, 
         {0, 0, 0}}; 


NSMutableString *finalString = [NSMutableString new]; 

for (NSInteger i = 0; i < idx1; ++i) { 
    NSMutableString *temp = [NSMutableString new]; 
    for (NSInteger j = 0; j < idx2; ++j) { 
     [temp appendString:[NSString stringWithFormat:@"[%ld]", arr[i][j] ]]; 
    } 
    [temp appendString: @"\n"]; 
    [finalString appendString:temp]; 
} 

NSLog(@"%@", finalString);