我想返回數組中最小的數字。從NSArray找到最低的NSInteger
參數:arrayOfNumbers - 一個NSNumbers數組。
返回:作爲NSInteger的數組中的最小數字。
我到目前爲止的代碼不會給我任何錯誤,但不會通過單元測試。我究竟做錯了什麼?
- (NSInteger) lowestNumberInArray:(NSArray *)arrayOfNumbers {
NSNumber* smallest = [arrayOfNumbers valueForKeyPath:@"@min.self"];
for (NSInteger i = 0; i < arrayOfNumbers.count; i++) {
if (arrayOfNumbers[i] < smallest) {
smallest = arrayOfNumbers[i];
}
}
NSInteger smallestValue = [smallest integerValue];
return smallestValue;
}
這是單元測試:
- (void) testThatLowestNumberIsReturned {
NSInteger lowestNumber = [self.handler lowestNumberInArray:@[@3, @8, @-4, @0]];
XCTAssertEqual(lowestNumber, -4, @"Lowest number should be -4.");
lowestNumber = [self.handler lowestNumberInArray:@[@83, @124, @422, @953, @1004, @9532, @-1000]];
XCTAssertEqual(lowestNumber, -1000, @"Lowest number should be -1000.");
}
您正在比較對象與c類型,導致im指針地址與int進行比較。 – vikingosegundo
爲什麼你有這個循環呢?你已經在第一線獲得最低分。 – dan
@vikingosegundo明白了!謝謝!我一直在追逐自己的尾巴。 LOL – ioskaveen