C#控制台程序输入Y/N需多次操作才响应的问题求助
问题:控制台需多次输入Y/N才触发响应
我正在优化程序启动后的即时响应效果,当前程序为未完成版本。当按提示输入"Y"或"N"时,需多次输入控制台才会识别并输出对应响应,期望仅输入一次即可触发输出。目前控制台要求输入两次Y或N才会响应,尝试过添加换行或额外Console.ReadLine()语句,但问题仍未解决。
原代码
internal static class Program { public static void Main() { Console.WriteLine("Hello, Simon!"); Console.WriteLine("Shall we begin?, Please Enter: Y/N"); Console.ReadLine(); if (Console.ReadLine() == "Y") { Console.WriteLine("Alright, Here we go!"); } else if (Console.ReadLine() == "N") { Console.WriteLine("Adios Simon!"); } } }
当前控制台输出
Hello, Simon!
Shall we begin?, Please Enter: Y/N
Y
Y
Alright, Here we go!
期望控制台输出
Hello, Simon!
Shall we begin?, Please Enter: Y/N
Y
Alright, Here we go!
问题原因
代码中总共调用了三次Console.ReadLine():
- 第一行单独的
Console.ReadLine();会读取第一次输入并丢弃,不做任何判断 if条件中的Console.ReadLine()需要读取第二次输入,才会判断是否为"Y"- 如果输入不是"Y",
else if中的Console.ReadLine()还会要求第三次输入来判断是否为"N"
这就是需要多次输入才能触发响应的核心原因。
修正后的代码
将输入值保存到变量中,仅调用一次Console.ReadLine(),后续判断直接使用该变量:
internal static class Program { public static void Main() { Console.WriteLine("Hello, Simon!"); Console.WriteLine("Shall we begin?, Please Enter: Y/N"); // 仅读取一次输入并存储到变量 string userInput = Console.ReadLine(); if (userInput == "Y") { Console.WriteLine("Alright, Here we go!"); } else if (userInput == "N") { Console.WriteLine("Adios Simon!"); } // 可选:添加非法输入的处理逻辑 else { Console.WriteLine("无效输入,请输入Y或N。"); } } }
修正后效果
运行程序后,只需输入一次"Y"或"N",控制台会立即输出对应的响应,完全符合期望的输出效果。
内容的提问来源于stack exchange,提问作者Simone Queen
相关产品推荐
相关产品推荐

