算术计算出错

时间:2012-05-07 01:24:06

标签: objective-c

我正在尝试从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);

提前完成了......

1 个答案:

答案 0 :(得分:4)

tries为0,因此int numberOfTries = [[savedStock objectAtIndex:2] intValue];也将0赋给numberOfTries,整数除以0会导致算术错误。

考虑:

avg = (numberOfTries == 0) ? 0 : ((totalScore / numberOfTries) * 100);