我正在尝试从NSMutableArray
计算2个检索到的值,但在运行时指向算术计算的方式时出错。
插入值的代码:
NSString *lastEx = @"None";
int lastScore = 0;
int tries = 0;
int total_score = 0;
int avg = 0;
int credit = 100;
[data addObject:lastEx];
[data addObject:[NSNumber numberWithInt:lastScore]];
[data addObject:[NSNumber numberWithInt:tries]];
[data addObject:[NSNumber numberWithInt:total_score]];
[data addObject:[NSNumber numberWithInt:avg]];
[data addObject:[NSNumber numberWithInt:credit]];
要检索的代码:
NSMutableArray *savedStock = [[NSMutableArray alloc] initWithContentsOfFile:path];
previousExercise.text = [savedStock objectAtIndex:0];
NSString *lastScoring = [NSString stringWithFormat:@"%d", [[savedStock objectAtIndex:1] intValue]];
previousScore.text = lastScoring;
NSString *totalTries = [NSString stringWithFormat:@"%d", [[savedStock objectAtIndex:2] intValue]];
attempts.text = totalTries;
NSString *average = [NSString stringWithFormat:@"%d", [[savedStock objectAtIndex:4] intValue]];
avgScore.text = average;
int totalScore = [[savedStock objectAtIndex:3] intValue];
int numberOfTries = [[savedStock objectAtIndex:2] intValue];
int avg;
avg = ((totalScore / numberOfTries) * 100);
NSString *rem_credit = [NSString stringWithFormat:@"%d", [[savedStock objectAtIndex:5] intValue]];
credits.text = rem_credit;
错误是=>的计算avg = ((totalScore / numberOfTries) * 100);
提前完成了......
答案 0 :(得分:4)
tries
为0,因此int numberOfTries = [[savedStock objectAtIndex:2] intValue];
也将0赋给numberOfTries
,整数除以0会导致算术错误。
考虑:
avg = (numberOfTries == 0) ? 0 : ((totalScore / numberOfTries) * 100);