C#如何验证用户yes/no输入有效性并在无效时重新提问
核心问题说明
你现有代码的死循环问题源于while判断的逻辑运算符使用错误:你使用了||(或),该条件下无论输入任何内容,都会满足「不等于yes」或「不等于no」的其中一项,导致循环永远不会退出。你需要将逻辑运算符替换为&&(且),仅当输入既不是yes也不是no时才触发重输逻辑。
优化后实现代码
using System; class Program { static void Main(string[] args) { // 首次提问 Console.WriteLine("你想观看这部精彩的电影吗?"); string answer = Console.ReadLine()?.Trim().ToLower() ?? ""; // 输入校验循环 while (answer != "yes" && answer != "no") { Console.WriteLine("请回答yes或no"); answer = Console.ReadLine()?.Trim().ToLower() ?? ""; } // 结果处理 if (answer == "yes") { Console.WriteLine("好的,现在为您播放电影"); // 此处添加播放电影的业务逻辑 } else { Console.WriteLine("已跳过电影播放流程"); // 此处添加后续流程逻辑 } } }
优化点说明
- 修正了循环条件的逻辑错误,彻底解决死循环问题
- 统一在读取输入时完成去空格、转小写、空值兼容处理,避免后续重复调用
ToLower()方法,代码更简洁易读 - 兼容用户直接回车、输入前后带空格的异常场景,鲁棒性更强
内容的提问来源于stack exchange,提问作者Someone somewhere in the world
相关产品推荐
相关产品推荐

