如果语句为真,为什么代码会转到 else ?

我试图通过水平提高来产生障碍,但由于某种原因,当我在游戏中测试它时,它无法按我想要的方式工作。


假设我从 26 级开始游戏。


我正常玩到36级,甚至35级都正确生成,但是当玩家完全达到36级时,代码进入else语句而不是else if..


这是我按级别产生障碍的代码..


if (curentLevel > 0  && curentLevel < 10)

{

    SpawnSpawner(0);

}

else if (curentLevel > 10 && curentLevel < 35)

{

    SpawnSpawner(1);

}

else if (curentLevel > 35 && curentLevel < 50)

{

    SpawnSpawner(2);

}

else if (curentLevel > 50 && curentLevel < 60)

{

    SpawnSpawner(5);

}

else 

{


}

else 语句中的代码被执行,在我的示例中,恰好在第 36 层,该代码为空。


我希望有解决方案,因为我告诉程序检查当前级别是否高于 35 (即 36 级别),如果级别小于 50 (即 36 ),所以我不知道为什么它不执行此代码:


 else if (curentLevel > 35 && curentLevel < 50)

我打赌我做错了什么,但我希望有人能指出我的解决方案并解释为什么程序不能按照我的思维方式工作,非常感谢......


慕的地10843
浏览 58回答 1
1回答

阿波罗的战车

您正在检查是否小于 35 且大于 35,因此当 currentLevel 恰好等于 35 时,它在任何条件下都不会评估 true。解决方案,根据 @DavidFreeman 在评论中的回答 - 问题的解决方案是使代码不那么复杂:if (curentLevel < 10){&nbsp; &nbsp; SpawnSpawner(0);}else if (curentLevel < 35){&nbsp; &nbsp; SpawnSpawner(1);}else if (curentLevel < 50){&nbsp; &nbsp; SpawnSpawner(2);}else if (curentLevel < 60){&nbsp; &nbsp; SpawnSpawner(5);}else&nbsp;{}这if (currentLevel > 10)是多余的,如果它不评估true,那么currentLevel < 10下一个肯定会是 10 或更多else if。如果必须使用特定范围,则必须注意在条件中包含所有级别,例如 @BACON 写入,根据当前条件,您将涵盖当前级别 1-9、11-34、36-49 和 51-59 ,因为10 < 10 == false& 10 > 10 == false。您需要在其中一个条件中包含第 10 级,例如10 <= 10 == true
打开App,查看更多内容
随时随地看视频慕课网APP