0

谁能看看我处理下面计算的方式是否有问题?即使答案实际上是正确的,我似乎在运行时也得到“你得分 0”。

- (void)countGain{
int gain = 0;
int percentage;
if ([answer objectForKey:@"1"] == [usrAnswer objectForKey:@"1"]) {
    gain += 1;

}
percentage = (gain / 10) * 100;

NSString *scored = [[NSString alloc] initWithFormat:@"You scored %d",percentage];
score.text = scored;
rangenans.text = [answer objectForKey:@"1"];

[scored release];

}
4

3 回答 3

1

这是整数运算。尝试:

percentage = gain * 10;

或者

percentage = (gain * 10 ) / 100;

或者

percentage = ((float)gain / 10) * 100;

请注意,在上述任何一项中,“百分比”只有 10 个选项,因此percentage = gain * 10;更简单。

于 2012-04-28T21:44:37.183 回答
1

这样做有什么意义:

percentage = (gain / 10) * 100;

采用

percentage = gain * 10;

休息看起来不错。你不应该除以整数。如果你得到 3/10 并且这是 int 值怎么办?

在条件改变

if([answer objectForKey:@"1"] == [usrAnswer objectForKey:@"1"])

到:

if([[answer objectForKey:@"1"] isEqualToString:[usrAnswer objectForKey:@"1"]])
于 2012-04-28T21:57:06.753 回答
0

问题是您正在尝试比较 NSStrings 和 == 比较字符串的 assresses。您想比较它们的值

例如

NSString *correct = @"Yes";
NSString *answer = ..... from some entry;

然后这两个 NSString 将指向不同的内存位。

要与用户回复比较,您需要使用isEqualToString:方法比较值

例如 gain += [correct isEqualToString:answer] ? 1 : 0;

在您的代码中 == 每次都失败,因此增益始终为 0。因此从未发生过 int 除法问题 - 但当增益变为 1 时会出现等。

于 2012-04-28T22:31:53.350 回答