C#中do-while使用||逻辑运算符出现异常问题求助
问题分析与解答
你完全没误解||运算符的用法,也完全可以在while条件中使用它,问题出在你搞反了循环继续的逻辑条件。
核心逻辑错误
do-while循环的规则是:先执行一次循环体,再判断while()里的条件——条件为true时继续循环,为false时终止循环。
你写的原条件是:
while(heroLife<=0 || monsterLife<=0);
这个条件的意思是:只要英雄或者怪物其中一方生命值<=0,就继续循环。但第一次循环后,初始10点生命值的英雄/怪物最多掉9点血,剩余生命值肯定大于0,所以这个条件的结果是false,循环直接终止,自然只执行了一次。
正确的逻辑
你的需求是“只要英雄和怪物都活着,就继续战斗”,所以循环继续的条件应该是两者的生命值都大于0,也就是:
while(heroLife>0 && monsterLife>0);
这样每次循环后,只要双方都没死,条件就为true,循环继续;直到其中一方生命值<=0,条件变为false,循环终止,这才符合战斗的逻辑。
如果非要用||怎么办?
如果想通过||实现同样的逻辑,需要对“终止条件”取反:
while(!(heroLife<=0 || monsterLife<=0));
不过这种写法不如直接用&&直观,实际开发中更推荐后者。
内容的提问来源于stack exchange,提问作者YCL
相关产品推荐
相关产品推荐

