簡體   English   中英

捕獲輸入錯誤

[英]Catching an input error

我在學校有這個作業,我們必須使用try and catch來確保用戶不會輸入負數的甜甜圈和不是整數的數據。 我使try / catch起作用,以便當我輸入一個負數時它再次詢問甜甜圈的數量,但是當我輸入一個字母而不是一個數字來表示甜甜圈的數量時,它會出現我為之創建的錯誤消息它,但不提供再次輸入甜甜圈數量的選項。 如果有人可以幫助我,將不勝感激。 謝謝。 這是我得到的代碼:

using System;
public class CostofDonuts
{
    public static void Main()
    {
        string lastName;
        int number_Of_Donuts;
        double Total_Cost, Final_Cost;


        try
        {

            // Get user to input their last name
            Console.Write("Enter customer's last name -> ");
            lastName = Convert.ToString(Console.ReadLine());

            //Get user to input amount of donuts purchased. Ensure that the integer inputted is positive.
            do
            {
                Console.Write("Enter the amount of donuts purchased -> ");
                number_Of_Donuts = Convert.ToInt32(Console.ReadLine());
                if (number_Of_Donuts < 0)
                    Console.WriteLine("Invalid input, number of donuts must be positive");
            } while (number_Of_Donuts <= 0);

            //Calculate cost of donuts
            if (number_Of_Donuts < 6)
                Total_Cost = number_Of_Donuts * 0.5;
            if (number_Of_Donuts <= 15)
                Total_Cost = number_Of_Donuts * 0.4;
            else
                Total_Cost = number_Of_Donuts * 0.3;

            //Calculate cost with tax
            if (number_Of_Donuts < 12)
                Final_Cost = (Total_Cost + 0.25) * 1.13;
            else
                Final_Cost = Total_Cost + 0.25;

            // Output final results
            Console.WriteLine("{0} bought {1} donuts which came to a total of {2:C}", lastName, number_Of_Donuts, Final_Cost);
            Console.ReadLine();
        }



        catch (FormatException e)
        {
            Console.WriteLine("Input must be a positive integer");
        }

        catch (Exception e)
        {
            Console.WriteLine("Input must be a positive integer");
        }
    }
}

您需要在循環內部使用try / catch來保持繼續

do
{
      Console.Write("Enter the amount of donuts purchased -> ");
      try
      {
           number_Of_Donuts = Convert.ToInt32(Console.ReadLine());
      }
      catch (Exception)
      {
           Console.WriteLine("Invalid input, number of donuts must be positive");
           number_Of_Donuts = 0;
      }

} while (number_Of_Donuts <= 0);

您可以使用int.TryParse

   do
    {
        Console.Write("Enter the amount of donuts purchased -> ");
        if(int.TryParse(Console.ReadLine(), out number_Of_Donuts ) && number_Of_Donuts >= 0)
            break;
        Console.WriteLine("Invalid input, number of donuts must be positive");
    } while (number_Of_Donuts <= 0);
       do
        {
            Console.Write("Enter the amount of donuts purchased -> ");
            Int.TryParse(Console.ReadLine(), out number_Of_Donuts);
            if (number_Of_Donuts < 0)
                Console.WriteLine("Invalid input, number of donuts must be positive");
        } while (number_Of_Donuts <= 0);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM