Objective c 什么';这个简单的方法有什么错?

Objective c 什么';这个简单的方法有什么错?,objective-c,methods,Objective C,Methods,这是一种计算分数的简单客观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)

这是一种计算分数的简单客观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 labelName.text=@"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];

}
(R1score/17)*100的结果总是0,因为这都是整数数学

Try(score/17.0)*100.0

(R1score/17)*100将始终得到0,因为这都是整数数学


试一试(分数/17.0)*100.0

您是否显示了实际传入该方法的数字?整数来自您的AppDelegate,可能它们没有正确填充或传递。AppDelegate.CorrectAnswerScontr1的值的可能范围是多少?我怀疑,对于可比(或小于)17的值,您会受到整数除法r1score/17的影响。如果r1score=5,则为5/17-->0;如果r1score=10,则为10/17-->0。所以0*100->0,然后您的过程返回“F”。要修复它,只需将17替换为17.0。您是否显示了实际传入该方法的数字?整数来自您的AppDelegate,可能它们没有正确填充或传递。AppDelegate.CorrectAnswerScontr1的值的可能范围是多少?我怀疑,对于可比(或小于)17的值,您会受到整数除法r1score/17的影响。如果r1score=5,则为5/17-->0;如果r1score=10,则为10/17-->0。所以0*100->0,然后您的过程返回“F”。要修复它,只需将17替换为17.0,我想我们都去过;-)的确在Delphi中,/始终返回浮点结果,而div执行整数除法。我已经被狗咬了很多次了。我想我们都去过;-)的确在Delphi中,/始终返回浮点结果,而div执行整数除法。我已经被狗咬了很多次了。