2014-03-30 154 views
1

我剛剛寫了我的第一個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(); 
     } 
    } 
} 
+0

只要使用TryParse,並且它返回false顯示錯誤並且不要繼續。 –

回答

2

您可以使用Int32.TryParse method來檢查你的字符串是一個有效的整數或沒有。此方法返回boolean值,您的對話成功與否。

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

而且我不明白你爲什麼要保留double的返回值Convert.ToInt32方法。這些因素(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爲默認值。這意味着你的字符串可以有其中之一這些;

  • 尾隨空格
  • 領導空格
  • 領先符號字符
+0

'strings'是一個無效的變量類型。這是一個錯字嗎? –

+0

@jsve是的,這是一個錯字。固定。 –

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); 
    } 
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是有效的號碼。