【问题标题】:Try-Catch, How to make the program catch an unrecognised valueTry-Catch,如何使程序捕获无法识别的值
【发布时间】:2014-10-30 19:45:09
【问题描述】:

如何告诉程序在用户输入无法识别的内容时捕获错误?例如。他们输入 40 或 sdfsdf 或 4f43f 而不是 USD 或 EURO。谢谢

Console.WriteLine("This is a Currency Converter --- Ver A1.00");


Console.WriteLine("----------------------------");

Console.WriteLine("----------------------------");

Console.WriteLine("Enter the amount of money:");

value = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("");

Console.WriteLine("Great, Now we must select which currency you want to convert to:");

Console.WriteLine("Type: USD or EURO");

Console.WriteLine("----------------------------");

Rate = Console.ReadLine();


try

{


}


catch

{
     Console.WriteLine("Enter a number:");
}

【问题讨论】:

  • Ummm... 放一个 if 语句,看看他们是否输入了其中之一?你知道怎么写 if 语句吗?
  • 使用if 语句来检查它等于什么?
  • 另外,您的“输入数字”在catch 块中,这很奇怪。这意味着您只希望他们在原始代码导致错误时这样做。

标签: c# try-catch


【解决方案1】:

您需要检查try 语句中的用户输入,而不是catch 语句中的用户输入。

这里有一些东西让你开始。在您阅读用户输入以输入USD 或EURO 后,检查并查看用户输入的内容。如果输入是USD 或EURO,则进行对话,否则强制用户重新输入值。

try
{
   Console.WriteLine("This is a Currency Converter --- Ver A1.00");
   Console.WriteLine("----------------------------");
   Console.WriteLine("----------------------------");
   Console.WriteLine("Enter the amount of money:");

   double value = Convert.ToDouble(Console.ReadLine());
   Console.WriteLine("");
   Console.WriteLine("Great, Now we must select which currency you want to convert to:");

   Console.WriteLine("Type: USD or EURO");
   Console.WriteLine("----------------------------");

   var Rate = Console.ReadLine();

   bool result = false;

   while (result == false)
   {

      if (Rate == "USD" || Rate == "EURO")
      {
        //do the converion
        result = true;
      }

      else
      {
         Console.WriteLine("Incorrect value. Enter USD or EURO");
         Rate = Console.ReadLine();

         if (Rate == "USD" || Rate == "EURO")
         {
           //do the converion
           result = true;
         }
         else
         {
            result = false;
         }

       }
     }
   }

注意*您还需要检查AMOUNT。如果用户输入abdfsdf 而不是数字怎么办?然后您的代码将转到catch 语句。

这是你开始做的事情。

【讨论】:

    【解决方案2】:

    我建议您使用对应数字的美元和欧元(例如 1 代表美元,2 代表欧元) 然后使用如下代码:

    using System;
    
    namespace ConsoleApplication7
    {
        class Program
        {
            static bool showErrorMessage = false;
            static void calc(int number)
            {
                if (number==1)
                {
                    Console.WriteLine("USD");
                }
                else if (number == 2)
                {
                    Console.WriteLine("EURO");
                }
                else
                {
                    getNumber();
                }
                Console.ReadLine();
            }
    
            static void getNumber()
            {
                if (showErrorMessage)
                {
                    Console.WriteLine("You Entered Invalid Number ,Only 1 and 2 Valid, Please Try Again :");
                }
                int number = 0;
                if (Int32.TryParse(Console.ReadLine().ToString(),out number))
                {
                    calc(number);
                }
                else
                {
                    showErrorMessage = true;
                    getNumber();
    
                }
            }
            static void Main(string[] args)
            {
                getNumber();
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 2013-09-30
      • 2014-03-22
      • 1970-01-01
      • 2019-01-12
      • 2014-08-09
      相关资源
      最近更新 更多