-2

我正在开发一个应用程序,用户在该应用程序中获得总分,并根据该分数进行判断并给予标题。但是,使用我使用的代码,最终结果始终是相同的,无论该主题获得什么分数。我不知道这是数学问题还是代码问题,因为它总是出现第一个选项:你没有任何 SWAG ......

if (totalScore<24) {
    describe.text = @"You have no SWAG whatsoever...";
}

else if (25<totalScore<49) {
    describe.text = @"You seem to be new to SWAG.";
}

 else  if (50<totalScore<74) {
    describe.text = @"You have a bit of SWAG, not enough though.";
}

else    if (75<totalScore<99) {
    describe.text = @"You definately have SWAG!";
}

 else   if (totalScore == 100) {
    describe.text = @"You are a GOD of SWAG.";
}
4

3 回答 3

3
else if (25<totalScore<49) {

应该:

else if (25<totalScore && totalScore<49) {

您编写它的方式被解析为就像您编写的那样:

else if ((25<totalScore) < 49) {

25<totalScore将是 1 或 0,具体取决于它是真还是假。无论哪种方式,它都小于49。

此外,您所有的比较都应该是<=而不是<. 否则,您将排除所有边界值。

于 2013-07-05T11:35:10.447 回答
0

如果以这种方式构建

if (25<totalScore<49) {...}

是有风险的。实际上你会做类似的事情

25<totalScore -> YES/NO (values will be casted from BOOL to int as 1/0)

然后你会做

0/1 < 49 which will be always true. 

所以总的来说你的 if 是错误的。

于 2013-07-05T11:48:41.743 回答
-1

您的第一行代码看起来与您目前所显示的一样吗?您需要输出总分。您可能没有在运行代码之前设置它?

如果做不到这一点,你确定它的编译正确吗?您需要在随后的 if 语句中使用 &&。

此外,您需要使用 <=,因为目前,如果分数为 24,它将不起作用。

于 2013-07-05T11:36:54.563 回答