[英]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.