【问题标题】:Product/Multiplication NSMutableArray Values [closed]乘积/乘法 NSMutableArray 值
【发布时间】:2013-12-21 13:03:06
【问题描述】:

我有一个 NSMutableArray,我需要将其中的所有数字相乘。 我只是不明白该怎么做。 PS。我对objective-c很陌生,所以尽可能清楚。 谢谢

【问题讨论】:

  • 这与 Xcode 无关。除此之外,这也不是非常特定于 Objective-C 的。将结果初始化为 1,然后遍历数组并将结果乘以数组中的下一个元素。
  • 并且应该注意的是,在不知道如何首先使用 C 或 Java 编程的情况下使用 Objective-C 进行编程是很危险的。你会养成各种坏习惯和误解。

标签: ios objective-c cocoa-touch


【解决方案1】:

是的,你也可以这样做..

int result=1;
NSMutableArray *array=[[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4", nil];
for (int i=0; i<[array count]; i++) {
result*=[[array objectAtIndex:i] integerValue];
}
NSLog(@"%d     ",result);

【讨论】:

  • 需要指出的是,虽然使用 NSExpression 或 KVC 的东西没问题,但上面的方法对于新手来说更高效也更容易理解。一个“技巧”是将数字存储为 NSNumber(或者可能是 NSString)值,因此您需要应用 integerValue 来获得可以在算术表达式中操作的 NSInteger。循环本身是每个程序员都应该知道的第二天性。
【解决方案2】:

H2CO3 是对的。为了完整起见尝试

NSNumber * sum = [numArray valueForKeyPath:@"@sum.self"];

其中 numArray 是您的数组。

【讨论】:

    【解决方案3】:

    您可以查看 NSExpression 类,它非常强大,您可以根据需要对其进行自定义。它还支持许多内置功能,例如:

    NSArray *nums = @[@1, @2, @3, @4, @5];
    NSExpression *expression = [NSExpression expressionForFunction:@"sum:" arguments:@[[NSExpression expressionForConstantValue:nums]]];
    id result = [expression expressionValueWithObject:nil context:nil];
    

    【讨论】:

      【解决方案4】:

      假设我们正在使用 int 值...

      int sum = 1;
      for (NSNumber *num in someArray) {
          sum *= [num intValue];
      }
      NSLog(@"%d", sum);
      

      intintValue 可以轻松替换为 doubledoubleValue 或任何适合您需要的内容。 someArray 是值数组的名称。


      但是,如果...问题措辞不当并且我们都误解了,并且您需要一个新数组,其索引包含其他两个数组中相同索引处的对象值的乘积,那么您'正在寻找更像这样的东西:

      NSMutableArray *productArray = [NSMutableArray array];
      for(int i=0; i<[arr1 count]; ++i) {
          int product = [[arr1 objectAtIndex:i] intValue] * [[arr2 objectAtIndex:i]
              intValue];
          [productArray addObject: [NSNumber numberWithInt: product]];
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多