我有一個2維陣列顯示2D陣列
NSInteger arr [3][3] = {{0, 0, 0},
{0, 0, 0},
{0, 0, 0}};
我試圖在Xcode的命令行來顯示它。我有:
NSLog(@"%d", arr);
但它不起作用。爲什麼和我需要使用什麼?
我有一個2維陣列顯示2D陣列
NSInteger arr [3][3] = {{0, 0, 0},
{0, 0, 0},
{0, 0, 0}};
我試圖在Xcode的命令行來顯示它。我有:
NSLog(@"%d", arr);
但它不起作用。爲什麼和我需要使用什麼?
您可以使用NSDictionary
這樣的:
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
類型值。所以你在這裏有三把鑰匙..「@ 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(@"}");
您正在用一個整數顯示。您需要顯示整個對象。
NSLog
不知道如何以您想要的方式顯示C數組。 您將需要兩個嵌套for循環來做到這一點。 外層循環迭代第一維索引。 內循環迭代第二維索引。 你可能想要在外環創建NSMutableString
,並添加到它使用stringWithFormat:
內循環的每次迭代,那麼你可以在內部循環後打印字符串NSLog
(外循環)
你也可以在外循環外部創建一個主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);
它很簡單,就像你在* C/C++ *中做的那樣。寫循環顯示它。 –