0

以下の計算を処理する方法に問題があるかどうか、誰でも見ることができますか? 答えが実際に正しい場合でも、実行時に「You scored 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) * 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 に答える
1

これは整数演算です。試す:

percentage = gain * 10;

また

percentage = (gain * 10 ) / 100;

また

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

上記のいずれの場合でも、「パーセンテージ」のオプションは 10 個しかないためpercentage = gain * 10;、より単純であることに注意してください。

于 2012-04-28T21:44:37.183 に答える
0

問題は、NSStrings を比較しようとしていて、== が文字列の評価を比較しようとしていることです。それらの値を比較したい

例えば

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

次に、これら 2 つの NSString は異なるメモリ ビットを指します。

回答したユーザーと比較するには、 isEqualToString:メソッドを使用して値を比較する必要があります

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

あなたのコードでは == 毎回失敗したため、ゲインは常に0でした。したがって、int除算の問題は発生しませんでしたが、ゲインが1になった場合などに発生します.

于 2012-04-28T22:31:53.350 に答える