尝试catch返回c#中的特定代码行

时间:2017-07-20 07:40:43

标签: c#

我在c#中创建一个程序,它将获取项目名称和该项目的数量,并计算项目的总数量。

我的问题是每当我在“输入项目数量:”中输入无效输入时,它会返回到代码的第一行并再次询问项目名称,什么如果我这样做,我可以继续而不重复我的代码的第一行吗?

我对我的问题进行了很多研究,但我找不到问题的答案。

try
{
    Console.Write("Enter the name of the item:");
        name = Console.ReadLine();
    Console.Write("Enter the quantity of item:");
        numOfItm = double.Parse(Console.ReadLine());
        totalItems += numOfItm;
    Console.Write("Enter the price of the item:");
        priceOfItm = double.Parse(Console.ReadLine());
        totalPrice = priceOfItm * numOfItm;
    Console.WriteLine("Total amount for " + name + " is:" + totalPrice);
        totalPriceOfItems += totalPrice;
}
catch
{
    Console.WriteLine("Please enter a valid input...");

}

这是整个情况:

这是我的全部代码。

double numOfItm, priceOfItm, totalPriceOfItems=0, discount, totalPrice,totalItems=0;
            string name, compute="";

 while(compute != "total")
            {
try
                    {
                        Console.Write("Enter the name of the item:");
                            name = Console.ReadLine();
                        Console.Write("Enter the quantity of item:");
                            numOfItm = double.Parse(Console.ReadLine());
                            totalItems += numOfItm;
                        Console.Write("Enter the price of the item:");
                            priceOfItm = double.Parse(Console.ReadLine());
                            totalPrice = priceOfItm * numOfItm;
                        Console.WriteLine("Total amount for " + name + " is:" + totalPrice);
                            totalPriceOfItems += totalPrice;
                    }
                    catch
                    {
                        Console.WriteLine("Please enter a valid input...");

                    }

if (compute == "total")
                {
                    discount = (totalPriceOfItems / 100) * 10;
                    Console.WriteLine("The total number of items:" + totalItems);
                    Console.WriteLine("The total amount of all items you purchased:" + totalPriceOfItems);
                    Console.WriteLine("discount amount:" + discount);
                    Console.WriteLine("Total amount to pay:" + (totalPriceOfItems - discount));
                    Console.ReadLine();
                }
                else
                {
                    continue;
                }

2 个答案:

答案 0 :(得分:2)

您可以将每个参数输入放在它自己的循环中,直到获得有效值

 int quantity;
 while (int.TryParse(Console.ReadLine(), out quantity) == false)
 {
     Console.WriteLine("Please enter valid quantity");
 }

答案 1 :(得分:0)

你不能真正避免为每个输入拆分try块,因为catch并不知道哪个Parse失败了。

如果您坚持使用单个块,那么您可以添加一个状态变量来监视到目前为止哪些输入成功。