我有这样的事情:
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网格并在控制台中打印它的最佳方法是什么?
答案 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];
}