2011-08-04 31 views
0

这是一个简单的计算得分的客观方法。我得到F的所有4个分数的结果,尽管它不应该这样做。我究竟做错了什么?这个简单的方法有什么问题?

-(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.0代替17.0 – viggio24

回答

4

(R1score/17)* 100将始终为0,因为它是全部数学运算。

尝试(得分/17.0)* 100.0

+0

好抓。从我+1。 –

+0

我想我们都在那里;-) –

+0

确实。在Delphi中,/总是返回浮点结果,而div则是整数除法。我被C方式多次咬伤。

相关问题