为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕的地10843 2023-07-09 14:54:58
我试图通过水平提高来产生障碍,但由于某种原因,当我在游戏中测试它时,它无法按我想要的方式工作。假设我从 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)我打赌我做错了什么,但我希望有人能指出我的解决方案并解释为什么程序不能按照我的思维方式工作,非常感谢......
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

您正在检查是否小于 35 且大于 35,因此当 currentLevel 恰好等于 35 时,它在任何条件下都不会评估 true。


解决方案,根据 @DavidFreeman 在评论中的回答 - 问题的解决方案是使代码不那么复杂:


if (curentLevel < 10)

{

    SpawnSpawner(0);

}

else if (curentLevel < 35)

{

    SpawnSpawner(1);

}

else if (curentLevel < 50)

{

    SpawnSpawner(2);

}

else if (curentLevel < 60)

{

    SpawnSpawner(5);

}

else 

{


}

这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


查看完整回答
反对 回复 2023-07-09
  • 1 回答
  • 0 关注
  • 55 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信