2011-08-04 9 views
0

スコアを計算するのは簡単なobjective-cの方法です。たとえそれがすべきではないとしても、私は4つのスコアのすべてについてFの結果を得る。私は間違って何をしていますか?この簡単な方法で何が問題になっていますか?

-(void) updateLetters:(int)score andLabel:(UILabel*)labelName { 
    if(score>=97) 
     labelName.text= @"A+"; 
    else if(score>=94) 
     labelName.text= @"A"; 
    else if(score>=90) 
     labelName.text= @"A-"; 
    else if(score>=87) 
     labelName.text= @"B+"; 
    else if(score>=84) 
     labelName.text= @"B"; 
    else if(score>=80) 
     labelName.text= @"B-"; 
    else if(score>=77) 
     labelName.text= @"C+"; 
    else if(score>=74) 
     labelName.text= @"C"; 
    else if(score>=70) 
     labelName.text= @"C-"; 
    else if(score>=67) 
     labelName.text= @"D+"; 
    else if(score>=64) 
     labelName.text= @"D"; 
    else if(score>=60) 
     labelName.text= @"D-"; 
    else [email protected]"F"; 

} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    int r1score=appDelegate.correctAnswersCountR1; 
    int r2score=appDelegate.correctAnswersCountR2; 
    int r3score=appDelegate.correctAnswersCountR3; 
    int r4score=appDelegate.correctAnswersCountR4; 
    r1score=(r1score/17)*100; 
    r2score=(r2score/17)*100; 
    r3score=(r3score/17)*100; 
    r4score=(r4score/17)*100; 
    [self updateLetters: r1score andLabel: R1]; 
    [self updateLetters: r2score andLabel: R2]; 
    [self updateLetters: r3score andLabel: R3]; 
    [self updateLetters: r4score andLabel: R4]; 

} 
+0

実際にこのメソッドに渡している数字は表示されていますか?整数はあなたのAppDelegateから来ています、おそらく、それらが満たされていないか、正しく渡されていないかもしれません。 –

+1

appDelegate.correctAnswersCountR1の値の可能な範囲はどれですか?私は、17に匹敵する(またはより小さい)値に対して、整数除算r1score/17が当てはまると考えています。事実、r1score = 5なら5/17 - > 0、r1score = 10なら10/17 - > 0だから、0 * 100 - > 0となり、あなたの手続きは "F"を返します。それを修正するには、17を17.0に置き換えてください。 – viggio24

答えて

4

(R1score/17)* 100すべての整数演算であるため、常に0になります。

試してみてください(スコア/ 17.0)* 100.0

+0

良いキャッチ。私の+1。 –

+0

私たちはすべてそこにいたと思う;-) –

+0

確かに。 Delphiでは、/は浮動小数点の結果を返しますが、divは整数の除算を行います。私は何度もCの方法で噛まれました。

関連する問題