c# - 将用户的输入传递给两个重载方法之一并显示返回字符串

标签 c# user-input overloading

我目前正在为学校进行一项计划练习。我要创建一个程序,允许用户输入整数项目编号或字符串描述。然后,该条目被传递到两个重载的 GetDetails() 方法之一,然后显示包含所有订单详细信息的返回字符串。

如果方法版本接受整数,它将查找描述和价格。

如果方法版本接受字符串描述,它将查找商品编号和价格。

如果未找到该项目,这些方法会返回相应的消息。

class Program
{
    static void Main()
    {
        string inputstring;
        int itemNum;

        WriteLine("Enter the item number or description of the item you would like to order.");
        inputstring = ReadLine();
        int.TryParse(inputstring, out itemNum);
        GetDetails(itemNum);
    }

    private static void GetDetails(string itemNum)
    {           
        if (itemNum == "Enchilada")
            WriteLine("Item number 20 priced at $2.95.");
        else if (itemNum == "Burrito")
            WriteLine("Item number 23 priced at $1.95.");
        else if (itemNum == "Taco")
            WriteLine("Item number 25 priced at $2.25.");
        else if (itemNum == "Tostada")
            WriteLine("Item number 31 priced at $3.10.");
        else
            WriteLine("Item not found.");
    }

    private static void GetDetails(int itemNum)
    {            
        if (itemNum == 20)
            WriteLine("The Enchilada is priced at $2.95.");
        else if (itemNum == 23)
            WriteLine("The Burrito is priced at $1.95.");
        else if (itemNum == 25)
            WriteLine("The Taco is priced at $2.25.");
        else if (itemNum == 31)
            WriteLine("The Tostada is priced at $3.10.");
        else
            WriteLine("Item not found.");
    }
}

我遇到的问题是让字符串部分正常工作。我可以通过删除 int.TryParse(inputstring, out itemNum); 并更改 GetDetails(inputstring) 来实现。这将允许字符串工作,但不会让程序的项目编号部分工作。我开始对如何让它发挥作用感到非常不知所措,并且希望得到一些意见。

最佳答案

改变

int.TryParse(inputstring, out itemNum);
GetDetails(itemNum);

if (int.TryParse(inputstring, out itemNum)) 
{
    GetDetails(itemNum);
}
else
{
    GetDetails(inputstring);
}

如果TryParse成功,则返回true。然后,这将使用该方法的 int 版本。否则,如果输入无法解析为 int,则使用 string 方法。

关于c# - 将用户的输入传递给两个重载方法之一并显示返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43331751/

相关文章:

c# - DropDownList 不想被设置

c# - 如何在Windows服务中设置一天的定时器间隔

c# - 如果路径包含 "#",则 System.Uri 无法提供正确的 AbsolutePath 和 LocalPath

python 多线程用于继续循环直到用户输入。帮助理解所要求的示例

c++ - 模板重载加上指向指针的指针

c# - 枚举比手动检查不同的变化更便宜时,是否在比较期间将 1,000 多个字符串转换为小写?

c++ - 在 C++ 中可靠地获取用户十六进制输入并进行错误处理

javascript - 如何在javascript中验证window.prompt?

c++ - C++ 类构造中的奇怪错误

c++ - 了解此 `const&` 特化的必要性