You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

方法中出现不必要的用户输入重复问题求助

问题分析与修复

原问题(中文翻译)

我有一个关于这段功能正常代码的具体问题:运行该代码时,用户必须输入两次内容(输入值后会出现空白位)。代码如下:

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 01:15:39