C#中输入1/2仍触发错误分支的条件判断问题排查
C#控制台决策游戏输入验证逻辑错误修复
问题原因
你的输入判断条件存在逻辑错误:
当前if条件使用||(逻辑或)连接answer != "1"和answer != "2",这会导致任何输入都满足该分支条件——因为一个字符串不可能同时等于"1"和"2",所以只要输入不是空/空格,要么answer != "1"为true,要么answer != "2"为true,最终整个条件表达式结果为true,直接触发错误提示分支。
修复方案
将非1非2的判断改为&&(逻辑与),表示输入**既不是"1"也不是"2"**时才触发错误分支,正确的条件表达式如下:
if (string.IsNullOrWhiteSpace(answer) || (answer != "1" && answer != "2"))
修复后的完整代码
bool runAgain = true; while (runAgain) { Console.WriteLine("你的问题内容"); Console.WriteLine("请选择1或2"); string answer = Console.ReadLine(); answer = answer.Trim(); if (string.IsNullOrWhiteSpace(answer) || (answer != "1" && answer != "2")) { Console.WriteLine("Wrong Input"); // 无需重复设置runAgain = true,循环会自动继续 } else if (answer == "1") { runAgain = false; // 输入1时执行的代码 } else { runAgain = false; // 输入2时执行的代码 } }
额外优化提示
错误分支中可以省略runAgain = true,因为变量初始值就是true,循环会自动继续执行,减少冗余代码。
内容的提问来源于stack exchange,提问作者user
相关产品推荐
相关产品推荐

