If语句不起作用

时间:2013-12-08 23:50:42

标签: objective-c if-statement

我正在尝试制作iOS应用,用户回答一些问题。用户得到一个问题,他将按照1到5的等级进行自我测量。当用户回答30个问题时,将出现一个新视图,用户可以看到他制作了多少分,结果 - 基于这些点的文字。

我的问题是,当我使用if-else语句时,我总是得到最低总和的结果文本。

int intSum = [self.sumFromList intValue];
if (intSum >= 135) {
    NSLog(@"135");
} else if ((intSum >= 120) && (intSum <= 134)) {
    NSLog(@"120 - 134");
} else if ((intSum >= 105) && (intSum <= 119)) {
    NSLog(@"105 - 119");
} else if ((intSum >= 90) && (intSum <= 104)) {
    NSLog(@"90 - 104");
} else if (intSum <= 89) {
    NSLog(@"89 or less");
} else {
    NSLog(@"Error");
}

任何人都可以看到我写错了,或者有人知道其他任何功能吗?而不是NSLog,我已经制作了两个数组生成结果和范围文本([self.result objectAtIndex:0];。当然0将根据总和更改)和不同的文本颜色。

编辑:这是我计算点数的方法:如果用户选择两点:

- (IBAction)twoPointsButton:(id)sender {
[self addPointsToList:2];
}

- (void)addPointsToList:(NSInteger)points {
questionID = questionID + 1; // Used to get the question from array
questionNo = questionNo + 1; // Used to get question number in title 
listPoints = listPoints + points; // Calculate the points

if (questionID == numberOfQuestions) {
    ResultView *resultView = [[ResultView alloc] initWithNibName:@"ResultView" bundle:nil];
    resultView.sumFromList = [NSString stringWithFormat:@"Sum: %i",listPoints];

    questionID = 0;
    questionNo = 1;
    listPoints = 0;
    self.title = [NSString stringWithFormat:@"Spørsmål %i/%i",questionNo,numberOfQuestions];
    self.question.text = [questions objectAtIndex:questionID];

    [self presentViewController:resultView animated:YES completion:nil];

} else {
    self.question.text = [questions objectAtIndex:questionID];
    NSString *newTitle = [NSString stringWithFormat:@"Spørsmål %i/%i",questionNo,numberOfQuestions];
    self.title = newTitle;
}

}

3 个答案:

答案 0 :(得分:0)

什么是sumFromList? 您将sumFromList的文本设置为“Sum:%i”,然后尝试使用intValue获取它。 如果是标签,您应该使用

[sumFromList.text intValue]

但是这也会给你一个值0,因为文本“Sum:%i”不能被解析为整数。

答案 1 :(得分:0)

根据您更新的代码,问题很明显。您的sumFromListSum: x形式的字符串,其中x是总和。

为什么不将sumFromList设为实际int属性而不是字符串。然后您可以根据需要操作该号码。如果您需要在视图控制器上显示该值,则始终可以选择将int值转换为字符串以供显示。

通过将其作为实际数字(而不是字符串),您可以对该值执行适当的检查。

答案 2 :(得分:-1)

分支问题通常是||的混乱什么时候&amp;&amp;应该使用或&amp;&amp;当||应该使用。 - 首先尝试清理你的if语句。

如果仍有问题,请检查进入循环的变量。进入循环的空值始终默认为最低分支。

如果不为null,则检查打印值是否超出if语句的预期值。然后,您必须决定是否扩展if语句或更改传入值以解决问题。

试试这个:

int intSum = [self.sumFromList intValue];
NSLog ( @"received intSum = %d", intSum );


if (intSum >= 135) {
    NSLog(@"135");
} else if (intSum >= 120) {
    NSLog(@"120 - 134");
} else if (intSum >= 105) {
    NSLog(@"105 - 119");
} else if (intSum >= 90) {
    NSLog(@"90 - 104");
} else if (intSum <= 89) {
    NSLog(@"89 or less");
} else {
    NSLog(@"Error intSum %d", intSum);
}
相关问题