2016-10-05 52 views
-1

我有一些問題,我的代碼.. C# 如果我運行它停靠在第一個if語句...如果else語句首先停止IF

嘗試和尋找一些答案,但diden 「找不到任何工作

 private void Bereken_Click(object sender, EventArgs e) 
    { 
     // Afmetingen van het het blok 
     var PL = int.Parse(EigenML.Text); 
     var PB = int.Parse(EigenMB.Text); 
     var PH = int.Parse(EigenMH.Text); 

     // Afmetingen van het stuk 
     var L = int.Parse(StukML.Text); 
     var B = int.Parse(StukMB.Text); 
     var H = int.Parse(StukMH.Text); 
     LabelEigenML.Text = PL.ToString(); 
     LabelEigenMB.Text = PB.ToString(); 
     LabelEigenMH.Text = PH.ToString(); 

     var L1 = PL/L; 
     var B1 = PB/B; 
     var H1 = PH/H; 
     var T1 = L1 * B1 * H1; 

     var L2 = PL/L; 
     var B2 = PB/B; 
     var H2 = PH/H; 
     var T2 = L2 * B2 * H2; 

     var L3 = PL/L; 
     var B3 = PB/B; 
     var H3 = PH/H; 
     var T3 = L3 * B3 * H3; 

     var L4 = PL/L; 
     var B4 = PB/B; 
     var H4 = PH/H; 
     var T4 = L4 * B4 * H4; 

     var L5 = PL/L; 
     var B5 = PB/B; 
     var H5 = PH/H; 
     var T5 = L5 * B5 * H5; 

     var L6 = PL/L; 
     var B6 = PB/B; 
     var H6 = PH/H; 
     var T6 = L6 * B6 * H6; 

     if (T1 >= T2 && T1 >= T3 && T1 >= T4 && T1 >= T5 && T1 >= T6) { 
      LabelStukML.Text = "Lengte" + L.ToString(); 
      LabelStukMB.Text = "Breedte" + B.ToString(); 
      LabelStukMH.Text = "Hoogte" + H.ToString(); 
      labelTotaal.Text = T1.ToString(); 
      Console.WriteLine("Should be 1"); 
     } else if (T2 >= T1 && T2 >= T3 && T2 >= T4 && T2 >= T5 && T2 >= T6) 
     { 
      LabelStukML.Text = "Lengte" + L.ToString(); 
      LabelStukMB.Text = "Hoogte" + H.ToString(); 
      LabelStukMH.Text = "Breedte" + B.ToString(); 
      labelTotaal.Text = T2.ToString(); 
      Console.WriteLine("Should be 2"); 

     } else if (T3 >= T1 && T3 >= T2 && T3 >= T4 && T3 >= T5 && T3 >= T6) 
     { 
      LabelStukML.Text = "Breedte" + B.ToString(); 
      LabelStukMB.Text = "Lengte" + L.ToString(); 
      LabelStukMH.Text = "Hoogte" + H.ToString(); 
      labelTotaal.Text = T3.ToString(); 

      Console.WriteLine("Should be 3"); 


     } 
     else if (T4 >= T1 && T4 >= T2 && T4 >= T3 && T4 >= T5 && T4 >= T6) 
     { 
      LabelStukML.Text = "Breedte" + B.ToString(); 
      LabelStukMB.Text = "Hoogte" + H.ToString(); 
      LabelStukMH.Text = "Lengte" + L.ToString(); 
      labelTotaal.Text = T4.ToString(); 
      Console.WriteLine("Should be 4"); 


     } 
     else if (T5 >= T1 && T5 >= T2 && T5 >= T3 && T5 >= T4 && T5 >= T6) 
     { 
      LabelStukML.Text = "Hoogte" + H.ToString(); 
      LabelStukMB.Text = "Breedte" + B.ToString(); 
      LabelStukMH.Text = "Lengte" + L.ToString(); 
      labelTotaal.Text = T5.ToString(); 
      Console.WriteLine("Should be 5"); 


     } 
     else if (T6 >= T1 && T6 >= T2 && T6 >= T3 && T6 >= T4 && T6 >= T5) 
     { 

      LabelStukML.Text = "Hoogte" + H.ToString(); 
      LabelStukMB.Text = "Lengte" + L.ToString(); 
      LabelStukMH.Text = "Breedte" + B.ToString(); 
      labelTotaal.Text = T6.ToString(); 
      Console.WriteLine("Should be 6"); 

     } 
     else 
     { 

      LabelStukML.Text = "Error"; 
      LabelStukMB.Text = "Error" ; 
      LabelStukMH.Text = "Error"; 
      labelTotaal.Text = "Error"; 
      Console.WriteLine("Should be 6"); 

     } 







    } 
} 

}

它應該計算sometings,那麼它看起來什麼是最大的,並按照特定的順序打印那些東西,但我總是得到我的第一個IF的輸出聲明

+3

通過它,你會看到你的本地人的價值。如果if中的第一個塊被執行,那將是因爲第一個表達式的計算結果爲true。 –

+5

我可能是錯的,但是看起來好像T1,T2 ... T6總是等於(L [n],B [n],H [n]用相同的值和相同的算法計算) –

+0

@MatteoUmili看起來很像我。乘法的所有部分都以與每個「TX」相同的方式計算。 –

回答

1

我看到兩個問題:

  • 所有6個計算塊包含完全相同的公式(如其他人也指出)。
  • 您正在進行整數運算,這意味着結果也是整數,並且對於某些輸入,它們可能都被四捨五入爲0。如果PL < L.修正:改爲使用Double.Parse(...)
+0

感謝有益的職位, 愚蠢的我不看這個問題, 剛剛複製並粘貼第一個,並更改了數字,但不是那個PL/L,PB/B,PH/H,都一樣:) 現在作爲一種魅力: –