方法中出现不必要的用户输入重复问题求助
问题分析与修复
原问题(中文翻译)
我有一个关于这段功能正常代码的具体问题:运行该代码时,用户必须输入两次内容(输入值后会出现空白位)。代码如下:
public string GetPayType() { Console.WriteLine("Please enter 1 if your pay type is a weekly hourly wage and 2 if your pay type is a monthly salary:"); if (Console.ReadLine() == "1") { payType = Convert.ToString(Console.ReadLine()); return payType; } else if (Console.ReadLine() == "2") { payType = Convert.ToString(Console.ReadLine()); return payType; } else { Console.WriteLine("Error! You may only enter a 1 or a 2!"); } return payType; }
问题原因
代码核心问题是重复调用Console.ReadLine():
- 第一次判断
if (Console.ReadLine() == "1")时已经读取了用户输入; - 如果输入是1,进入分支后又调用
Console.ReadLine(),要求用户再输入一次; - 如果输入不是1,
else if里又会读取新的输入,导致用户被迫多次输入。
另外,Convert.ToString(Console.ReadLine())完全多余,因为Console.ReadLine()本身返回的就是字符串类型。
修复后的代码
public string GetPayType() { Console.WriteLine("请输入1表示按周时薪结算,输入2表示按月薪结算:"); string userInput = Console.ReadLine(); // 仅读取一次用户输入并存储 if (userInput == "1") { payType = userInput; return payType; } else if (userInput == "2") { payType = userInput; return payType; } else { Console.WriteLine("错误!只能输入1或2!"); } return payType; }
修复说明
- 先将用户输入存入
userInput变量,后续所有判断和赋值都基于这个变量,彻底避免重复读取输入; - 移除了多余的类型转换,直接使用读取到的字符串即可;
- 提示文本已翻译成中文(如需保留英文可改回原句)。
内容的提问来源于stack exchange,提问作者ronalddonaldronald
相关产品推荐
相关产品推荐

