我创建了一个由正,负和零组成的数组,但是它将数组中的所有元素都视为正数。在代码中,positiveCount为6。如何在Objective-C的数组中放入负数?
NSInteger positiveCount = 0;
NSInteger zeroCount = 0;
NSInteger negativeCount = 0;
NSArray *arr = [NSArray arrayWithObjects:@-4,@-3,@-9,@0,@4,@1, nil];
for (NSInteger i = 0; i < arr.count; i++){
NSLog(@"%d",arr[i]);
if (arr[i] > 0)
{
positiveCount += 1;
} else if (arr[i] < 0){
negativeCount += 1;
} else {
zeroCount += 1;
}
}
NSLog(@"%d",positiveCount);
答案 0 :(得分:2)
数组中的元素不是数字,它们是NSNumber
实例,即指针。指针始终是积极的:
for (NSNumber* number in arr) {
NSInteger intValue = number.integerValue;
NSLog(@"%d", intValue);
if (intValue > 0) {
positiveCount += 1;
} else if (intValue < 0) {
negativeCount += 1;
} else {
zeroCount += 1;
}
}
答案 1 :(得分:1)
使用enumerateObjectsUsingBlock
的另一种解决方案,
__block NSInteger positiveCount = 0;
__block NSInteger zeroCount = 0;
__block NSInteger negativeCount = 0;
NSArray *arr = [NSArray arrayWithObjects:@-4,@-3,@-9,@0,@4,@1, nil];
[arr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSInteger value = ((NSNumber *)obj).integerValue;
if (value > 0) {
positiveCount += 1;
} else if (value < 0) {
negativeCount += 1;
} else {
zeroCount += 1;
}
}];
NSLog(@"%ld",(long)positiveCount);