我有一个 NSNumbers 的 NSMutable 数组,它是从 NSInteger 值转换而来的。如果我混合使用负数和正数,我最终得到的结果是最小的正数是整体上最小的数字,即使有负数也是如此。如果所有数字都是负数,它将找到最小的一个(例如 -2、-1、-1 将给出 -2 作为最小值)。
self.scoreArray = [[NSMutableArray alloc]initWithObjects:self.pOne, self.pTwo...etc];
NSNumber *min = self.scoreArray[0];
for (int i=0; i<[self.scoreArray count]; i++) {
if (self.scoreArray[i] < min) {
min = self.scoreArray[i];
}
NSLog(@"The smallest number is %@", min);
}
我怎样才能改变它,使最小的数字(包括负数)总是正确的?
最佳答案
在您的代码中,min
不是int
,它是指向NSNumber
实例的指针。
您必须比较 integerValues
。请注意,下面的代码将返回原始的 NSNumber
,而不是副本。
我还假设 scoreArray
包含 NSNumber
。
self.scoreArray = [[NSMutableArray alloc]initWithObjects:self.pOne, self.pTwo...etc];
NSNumber *min = self.scoreArray[0];
for (int i=0; i<[self.scoreArray count]; i++) {
if ([self.scoreArray[i] integerValue] < [min integerValue]) {
min = self.scoreArray[i];
}
NSLog(@"The smallest number is %@", min);
}
关于ios - 在数组中查找最小数字时不考虑负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25613857/