簡體   English   中英

在C#中檢查用戶輸入

[英]Checking user input in C#

我只是寫了我的第一個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();
        }
    }
}

您可以使用Int32.TryParse方法檢查您的字符串是否為有效整數。 此方法返回一個boolean值,表示您的對話是否成功。

將數字的字符串表示形式轉換為其等效的32位有符號整數。 返回值指示轉換是否成功。

而且我不明白您為什么要將Convert.ToInt32方法的返回值保持double 這些因子(a,b,c)應該是整數,而不是兩倍。

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.
}

Int32.TryParse(string, out int)重載使用NumberStyle.Integer作為默認值。 這意味着您的字符串可以具有以下之一

  • 尾隨空格
  • 前導空格
  • 前導符號字符

退房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);
  }

do-while循環中使用try-catch塊:

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

這將循環直到a為有效數字。

暫無
暫無

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

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