Objective c 如果语句赢了';行不通

Objective c 如果语句赢了';行不通,objective-c,if-statement,Objective C,If Statement,我正在尝试制作一个iOS应用程序,用户可以在其中回答一些问题。用户得到一个问题,他将自己的范围从1到5。当用户回答了30个问题后,将出现一个新的视图,用户可以在其中看到他提出了多少观点,以及基于这些观点的结果文本 我的问题是,当我使用if-else语句时,我总是得到最小和的结果文本 int intSum = [self.sumFromList intValue]; if (intSum >= 135) { NSLog(@"135"); } else if ((intSum >

我正在尝试制作一个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");
}

}

分支问题通常是关于何时使用和何时使用的混淆首先尝试清理你的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);
}
int intSum=[self.sumFromList intValue];
NSLog(@“接收到的整数=%d”,整数);
如果(整数>=135){
NSLog(@“135”);
}否则如果(整数>=120){
NSLog(@“120-134”);
}否则如果(整数>=105){
NSLog(@“105-119”);
}否则如果(整数>=90){
NSLog(@“90-104”);
}否则如果(intSum什么是sumFromList?
您正在将sumFromList的文本设置为“Sum:%i”,然后尝试使用intValue获取它。
如果它是一个标签,你应该使用

[sumFromList.text intValue]


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

根据您更新的代码,问题很明显。您的
sumFromList
是一个字符串,格式为
Sum:x
,其中
x
是总和

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


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

给您意外日志输出的
intSum
的值是多少?换句话说,
if
语句没有问题。问题很可能是如何计算
intSum
。请记住,如果self.sumFromList为零,则
intValue
将为零。T这里的问题不是
if
语句。问题是你对错误的假设。我会做的第一件事是
NSLog(@“%d”,intSum)
if else
阻塞之前。请删除语句中的冗余条件。如果
intSum
不大于或等于135,则您知道它小于或等于134。您不需要测试它。我们不需要屏幕截图。我们需要更多的代码。您如何计算代码中的和。不要用英语告诉我们,用Objective C告诉我们这并不能以任何方式解决问题。虽然对
if
语句的更改是适当的,但它们在任何方面都不是问题所在。将NSLog放在if语句的顶部检查以确保if语句得到了您认为它得到的结果,并且几乎肯定会解决问题问题可能是错误的根源。记录错误值如何修复错误值?如果阅读更新的问题代码和更新的答案,您将看到问题。它与
If
语句无关。您的答案不会试图解决问题。
If
语句中的附加条件tement从来都不是问题所在。循环没有逻辑错误,因此传入的值必须不正确。打印出该值可以让您知道它是否为null或超出循环预期的值。知道该值几乎总是会让问题变得明显。当分支条件失败时,这应该是您尝试的第一件事。很抱歉,这是错误的用问题中的可用信息可以给出的最完整的解决方案。有时,别人只能给你这么多。我以前没见过,我不得不承认我觉得有点傻。当然,我不能用“和:x”来做整数。谢谢你的帮助!
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);
}