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

C#中else if语句失效问题:输入60+程序直接关闭无输出

问题分析与修复方案

嘿,我来帮你捋捋这个问题!你的代码逻辑出了点小疏漏,咱们一步步拆解明白:

为啥输入60+的分数没反应?

你写的第一个if (x >=50)会先做判断——当分数是60及以上时,这个条件是成立的,所以程序会进入这个if块里。但里面嵌套的if (x <=59)不满足,所以这个块里啥也没执行。而后面的else if (x >=60)是和第一个if配对的,因为第一个if已经被触发了(不管里面的嵌套if有没有执行内容),所以else if根本不会被检查到,自然就没输出啦!

修正后的代码

咱们把逻辑调整得更清晰,两种方案供你选:

方案一:合并条件,去掉嵌套

Console.WriteLine("Please state your marks........");
string uservalue = Console.ReadLine();
int x = Convert.ToInt32(uservalue);

if (x >= 50 && x <= 59) {
    Console.WriteLine("You Passed");
} else if (x >= 60) {
    Console.WriteLine("Passed Grade B");
}
// 建议加上不及格的情况,避免低分数也无输出
else {
    Console.WriteLine("You Failed");
}
Console.ReadLine();

方案二:调整判断顺序(从高到低)

Console.WriteLine("Please state your marks........");
string uservalue = Console.ReadLine();
int x = Convert.ToInt32(uservalue);

// 先判断更高的分数区间,逻辑更顺
if (x >= 60) {
    Console.WriteLine("Passed Grade B");
} else if (x >= 50) {
    Console.WriteLine("You Passed");
} else {
    Console.WriteLine("You Failed");
}
Console.ReadLine();

新手小提醒

  • 写条件判断时,尽量避免不必要的嵌套,逻辑会更易懂;
  • 可以按从严格到宽松的顺序排条件,减少逻辑冲突;
  • 别忘了处理所有边界情况,比如分数小于50的场景,不然这部分输入也会没输出;
  • 额外提一句:Convert.ToInt32如果遇到非数字输入会直接崩溃,新手阶段可以试试int.TryParse做安全转换,让程序更健壮~

内容的提问来源于stack exchange,提问作者Noobie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:26:28