【问题标题】:Add diagonal of 2 dimensional array in Objective C在Objective C中添加二维数组的对角线
【发布时间】:2018-12-21 10:49:49
【问题描述】:

给定:二维数组:

 [[1 2 3]  
  [4 5 6]  
  [9 8 9 ]]  

需要添加数组的对角线:1+5+9 = 15

   NSMutableArray *array = [NSMutableArray arrayWithObjects:[NSMutableArray arrayWithObjects:@1,@2,@3,nil],
                        [NSMutableArray arrayWithObjects:@4,@5,@6,nil],
                        [NSMutableArray arrayWithObjects:@9,@8,@9,nil],nil];

   NSNumber* total = 0;
   for (NSNumber* row in array) {
     total = total + array[row][row];
   }

   NSLog(@"%@",total);

在这里我无法访问数组的元素。它在“array[row][row]”上给出错误。在 Objective-C 中初始化 2D 数组和访问数组元素的最佳方法是什么?

【问题讨论】:

  • NSUInteger 总计 = 0; for (NSUInteger i = 0, i

标签: ios objective-c arrays multidimensional-array


【解决方案1】:

在您的代码中,您在此处执行的操作:for (NSNumber* row in array)array 的每个元素放入row 变量中(这称为array enumeration 顺便说一句)。

您需要的是使用数组的 索引 - 而不是每个元素的 (这就是您在上面所做的)。

此外,您不必使用对象 (NSNumber *) 进行计算。一个简单的 NSInteger 就可以了。

代码如下:

NSMutableArray *array = [NSMutableArray arrayWithObjects:[NSMutableArray arrayWithObjects:@1,@2,@3,nil],
                    [NSMutableArray arrayWithObjects:@4,@5,@6,nil],
                    [NSMutableArray arrayWithObjects:@9,@8,@9,nil],nil];

NSInteger total = 0;
for (NSUInteger row = 0; row < array.count; row ++) {
    total = total + [array[row][row] integerValue]; // integerValue converts the NSNumber to an NSInteger
}

NSLog(@"%d",total);

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多