计算问题

时间:2012-04-28 21:43:13

标签: objective-c ios xcode

任何人都可以看到我处理下面的计算方式是否有问题?我似乎在运行时得到“你得分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];

}

3 个答案:

答案 0 :(得分:1)

这是整数运算。尝试:

percentage = gain * 10;

percentage = (gain * 10 ) / 100;

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

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

答案 1 :(得分: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"]])

答案 2 :(得分:0)

问题在于您正在尝试比较NSStrings和==比较字符串的结果。您想要比较它们的值

e.g。

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

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

要与回复的用户一致,您需要使用isEqualToString:方法

来比较值

e.g。 gain += [correct isEqualToString:answer] ? 1 : 0;

在你的代码中= =每次都失败,所以增益总是为0.所以int除法问题从未出现过 - 但是当增益变为1等时它会有。