2015-09-25 179 views
-1

每當我爲分母輸入一個無效的數字(例如數字太長或字母)時,我總是會得到「NOtZero」。我的If/Else語句邏輯不正確。什麼是錯的,我該如何解決這個問題?Else block not working

static void Main(string[] args) 
{ 
    Console.WriteLine("Enter Numerator"); 
    int numerator; 
    bool IsNumeratorConverstionSucess=Int32.TryParse(Console.ReadLine(), out numerator); 

    if (IsNumeratorConverstionSucess) 
    { 

     Console.WriteLine("Enter Denominator"); 
     int denominator; 
     bool IsdenominatorConverstionSucess = Int32.TryParse(Console.ReadLine(), out denominator); 
     if (IsdenominatorConverstionSucess && denominator != 0) 
     { 
      int result = numerator/denominator; 
      Console.WriteLine("Result is = {0}", result); 
     } 
     else 
     { 
      if(denominator==0) 
      { 
       Console.WriteLine("NOtZero"); 
      } 
      else 
      { 
      Console.WriteLine("Deominator Should Be A Valid Number Between {0} To {1} Range", Int32.MinValue, Int32.MaxValue); 
      } 
     } 
    } 
    else 
    { 
     Console.WriteLine("Numerator Should Be A Valid Number Between {0} To {1} Range",Int32.MinValue,Int32.MaxValue); 
    } 
} 
+1

它真的*不清楚你想達到什麼。我假設英語不是你的母語 - 這當然是好事,但確實使我們難以幫助你。我建議你問一個有更好英語指導的朋友或同事,以幫助你解釋你想要做什麼和出現什麼問題。 –

+0

好的感謝您的建議 –

回答

1

,當你進入一個無效的分母你得到「NOtZero」究其原因,是因爲int.tryparse套它的輸出參數爲0時,它失敗。所以,你的代碼是使用下面的工作流程時,你的分母值輸入a

  1. 實例化一個名爲denominator
  2. 嘗試將用戶輸入轉換爲整數變量,並返回到denominator
  3. 轉換失敗,那麼返回false,設置denominator設置爲0
+0

感謝您的建議 –

0

Johnie卡爾是正確的,因爲分母將始終爲0,如果解析失敗了你的邏輯失敗。

做到這一點的另一種方法是在成功分支內移動零檢查邏輯。

if (IsdenominatorConverstionSucess) 
{ 
    if(denominator==0) 
    { 
     Console.WriteLine("NOtZero"); 
    } 
    else 
    { 
     int result = numerator/denominator; 
     Console.WriteLine("Result is = {0}", result); 
    } 

} 
else 
{ 
    Console.WriteLine("Denominator Should Be A Valid Number Between {0} To {1} Range", Int32.MinValue, Int32.MaxValue); 
} 
+0

Anatoly Sazanov非常非常感謝問題解決我是你的粉絲 –