我正在尝试制作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;
}
}
答案 0 :(得分:0)
什么是sumFromList? 您将sumFromList的文本设置为“Sum:%i”,然后尝试使用intValue获取它。 如果是标签,您应该使用
[sumFromList.text intValue]
但是这也会给你一个值0,因为文本“Sum:%i”不能被解析为整数。
答案 1 :(得分:0)
根据您更新的代码,问题很明显。您的sumFromList
是Sum: 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);
}