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