在C#中检查用户输入

时间:2014-03-30 13:36:48

标签: c# math

我刚刚编写了我的第一个C#控制台应用程序,我还是初学者。无论如何,我尝试了下面的代码,它似乎工作,它用于解决二次方程。我想为用户输入字符串而不是整数的情况添加代码,并提供错误消息,告知如何实现此操作?

namespace Quadratic_equation
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("welcome to seyi's quadratic calculator!!!");
            Console.Write("a:");
            double a = Convert.ToInt32(Console.ReadLine());


            Console.Write("b:");
            double b = Convert.ToInt32(Console.ReadLine());
            Console.Write("c:");
            double c = Convert.ToInt32(Console.ReadLine());
            if ((b * b - 4 * a * c) < 0) {
                Console.WriteLine("There are no real roots!");
            }
            else {
                double x1 = (-b + Math.Sqrt((b*b)-4*a*c)) /2*a;
                double x2 = (-b + Math.Sqrt((b*b)-4*a*c)) /2*a;
                Console.WriteLine("x:{0}",x1);
                Console.WriteLine("y:{0}",x2);
            }

            Console.ReadKey();
        }
    }
}

3 个答案:

答案 0 :(得分:2)

您可以使用Int32.TryParse method检查字符串是否为有效整数。此方法为您的会话返回boolean值是否成功。

  

将数字的字符串表示形式转换为32位有符号   整数当量。返回值表示是否转换   成功了。

而且我不明白为什么要保持double方法的返回值为int a; string s = Console.ReadLine(); if(Int32.TryParse(s, out a)) { // Your input string is a valid integer. } else { // Your input string is not a valid integer. } 。这些因素(a,b,c)应该是整数,而不是双倍。

Int32.TryParse(string, out int)

此{{1}}重载使用Convert.ToInt32作为默认值。这意味着您的字符串可以包含 之一

  • 尾随空格
  • 领先的白色空间
  • 领导标志字符

答案 1 :(得分:1)

查看int.TryParse

   int number;
  bool result = Int32.TryParse(value, out number);
  if (result)
  {
     Console.WriteLine("Converted '{0}' to {1}.", value, number);         
  }
  else
  {
     if (value == null) value = ""; 
     Console.WriteLine("Attempted conversion of '{0}' failed.", value);
  }

答案 2 :(得分:1)

try-catch循环中使用do-while块:

bool goToNextNum = false;
do
{
    try
    {
        double a = Convert.ToInt32(Console.ReadLine());
        goToNextNum = true;
    }
    catch
    {
        Console.WriteLine("Invalid Number");
    }
} while (goToNextNum == false);

这将循环,直到a为有效数字。