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
相关产品推荐
相关产品推荐

