You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 07:31:07