2017-06-28 19 views
-1

我試圖創建if語句或try/catch,希望在控制檯應用程序接收到輸入的條件下執行(即我轉換爲Int32)不是一個整數。這是我一直在使用的代碼片段:根據輸入是否是字符串/ int執行if語句或try/catch

  Console.WriteLine("What year was your car made? [MUST BE IN YEAR FORMAT]"); 
      caryearchk = Console.ReadLine(); 

      if (caryearchk.GetType() != int) // Can't figure out a way to return a bool through .GetType() 
      { 
       Console.Write("Error. you MUST submit this in an integer form. The application will now close."); 
       Console.ReadLine(); 
      } 
      else 
      {    
      } 
      caryear = Convert.ToInt32(Console.ReadLine()); 

      Console.WriteLine("What is the drivetrain? [ FWD /// RWD /// AWD /// 4WD ]"); 
      cartrain = Console.ReadLine(); 
     } 
     Car car = new Car(carmake, 

如果有任何其他/更有效的方法來解決這個問題,我寧願更喜歡那個。我渴望知道許多不同的方法來解決這樣的基本問題

+0

如果Console.ReadLine();返回一個字符串,如「兩千一十五」不會導致應用程序以.TryParse()結束?我的目標是,如果用戶輸入某種錯誤的格式或無意中添加了一個字母,就可以拋出錯誤 –

回答

2

恕我直言,你正在尋找:

int.TryParse(string, out int); 

TryParse MSDN上。

+0

如果Console.ReadLine();返回一個字符串,如「兩千一十五」不會導致應用程序以.TryParse()結束?我的目標是能夠拋出一個錯誤,如果用戶輸入某種錯誤的格式 –

+0

您是否在找:https://azure.microsoft.com/fr-fr/services/cognitive-services/language-understanding - 智能服務/? – tschmit007

+1

@ S.Nog如果解析失敗,由於字符串格式不正確,'int.TryParse'返回'false'。它不會自行終止應用程序。 – Kyle

0
 Console.WriteLine("What year was your car made? [MUST BE IN YEAR FORMAT]"); 
     caryearchk = Console.ReadLine(); 
     int caryearchkint; 
     if (int.TryParse(caryearchk,caryearchkint) // Can't figure out a way to return a bool through .GetType() 
     { 
      Console.Write("Error. you MUST submit this in an integer form. The application will now close."); 
      Console.ReadLine(); 
     } 
     else 
     {    
     } 
     caryear = Convert.ToInt32(Console.ReadLine()); 

     Console.WriteLine("What is the drivetrain? [ FWD /// RWD /// AWD /// 4WD ]"); 
     cartrain = Console.ReadLine(); 
    } 
    Car car = new Car(carmake, 

我相信int.TryParse是你所需要的。

1

Console.ReadLine返回一個字符串。它總是一個字符串。您需要嘗試使用int.TryParse將該值轉換爲int