将用户的条目传递给两个重载方法之一并显示返回字符串

时间:2017-04-10 19:44:51

标签: 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)来执行此操作。这将允许字符串工作,但不允许程序的项号侧工作。我开始感到非常不知所措,试图让它发挥作用,并希望得到一些意见。

1 个答案:

答案 0 :(得分:2)

更改

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

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

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