创建10x10网格并在控制台中打印它的最佳方法是什么?

时间:2014-02-20 21:09:24

标签: ios iphone objective-c

我有这样的事情:

NSMutableArray *theBoard = [NSMutableArray array];

for (int i = 0; i < 100; i++) 
{
    [theBoard addObject:[NSString stringWithFormat:@"o"]];
} 

for (int i = 0; i < 10; i++) 
{
    NSLog(@"       %@",[[theBoard subarrayWithRange:NSMakeRange(0+(i*10), 10)]componentsJoinedByString:@"  "]);
}

控制台输出:

o o o o o o o o o o
o o o o o o o o o o
o o o o o o o o o o
o o o o o o o o o o
o o o o o o o o o o
o o o o o o o o o o
o o o o o o o o o o
o o o o o o o o o o
o o o o o o o o o o
o o o o o o o o o o

我需要使用数组的坐标。我该如何解决这个问题?

创建10x10网格并在控制台中打印它的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

使用二维数组。

以下是如何操作:

NSArray *rowArray = @[@"o", @"o", @"o", @"o", @"o", @"o", @"o", @"o", @"o", @"o",];
NSMutableArray *board = [[NSMutableArray alloc] initWithCapacity:10];

for (int rowIndex = 0; rowIndex < 10; rowIndex ++)
{
    [board addObject:[rowArray mutableCopy]];
}

打印主板到控制台:

for (int rowIndex = 0; rowIndex < 10; rowIndex ++)
{
    NSArray *row = board[rowIndex];

    NSLog(@"|%@|", [row componentsJoinedByString:@" "]);
}

现在,您可以使用 X,Y坐标

参考电路板上的每个字段
board[yourXLocation][yourYLocation];

旁注。您还可以以更直观的方式声明您的数组。看看发生了什么。

3x3阵列示例:

NSArray *myArray = [[NSMutableArray alloc] initWithArray:@[@[ @"o", @"o", @"o"],
                                                           @[ @"o", @"o", @"o"],
                                                           @[ @"o", @"o", @"o"]]];

答案 1 :(得分:0)

您应该使用多维数组,或者在这种情况下使用2d数组。这将允许您使用theBoard[0][0]

之类的内容查找元素
NSMutableArray *theBoard = [NSMutableArray array];
for (int i = 0; i < 10; i++) {
    NSMutableArray *row = [NSMutableArray array];
    for (int j = 0; j < 10; j++) {
         [row addObject:[NSString stringWithFormat:@"o"]];
    }
    [theBoard addObject:row];
}