Создать массив отрицательных чисел в Objective C - PullRequest
0 голосов
/ 22 декабря 2018

Я создал массив положительных, отрицательных и нулевых чисел, но он рассматривает все элементы в массиве как положительные числа.Здесь в коде значение 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);

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Еще один способ решения с использованием 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);
0 голосов
/ 22 декабря 2018

Элементы в вашем массиве - это не числа, а 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...