2016-07-27 86 views
2

我需要輸入3個數字,然後使用IF命令輸出最高的3個數字中最低的&。我有一切工作,除了我得到1最大的數字(正確)和3個輸出的最低數字(不正確)。現在我完全明白爲什麼他們都被顯示,我只是不知道如何解決它。我的代碼,一旦整數已經由用戶輸入定義,如下:基本c#if語句查詢

if (num1 > num2 && num1 > num3) 
{ 
    Console.WriteLine("Largest Number: " + num1); 
} 

if (num2 > num3) 
{ 
    Console.WriteLine("Smallest Number: " + num3); 
} 
else 
{ 
    Console.WriteLine("Smallest Number: " + num2); 
} 

,然後重複3次,切換各個整數。我明白問題在哪,第二個if命令對於所有3種情況都是正確的。我只是...不知道如何解決它。我覺得我只是需要以某種方式將這兩個if語句加入一起,但我不確定如何做到這一點,或者甚至可能。

+8

瞭解如何使用調試器,把破發點上的if語句,看到控制是如何將其他條件,如果有任何其他** **你需要的。 – Habib

+1

您是否嘗試將第二個if(最小數字測試)塊移動到第一個(測試最大數的那個)? – Sidewinder94

+0

並不確定降薪,這可能是其他人的基本問題,但獲得降薪的問題並不是那麼糟糕。 – Habib

回答

3

你可以,你將不得不在很多情況下,組塊。 這樣,第二個if僅在第一個評估爲true時才被評估。

if (num1 > num2 && num1 > num3) 
{ 
    Console.WriteLine("Largest Number: " + num1); 

    if (num2 > num3) 
    { 
    Console.WriteLine("Smallest Number: " + num3); 
    } 
    else 
    { 
     Console.WriteLine("Smallest Number: " + num2); 
    } 
} 

這只是回答你最直接的問題,也就是最小的數字被多次顯示。

例如,您可能會遇到其他人,例如其他人提到的:如果兩個數字相等,該怎麼辦?

+0

如果num1是最小的呢?你將得不到輸出。 – Habib

+0

謝謝你,這正是我所錯過的。對於這種低調,請記住代碼被複制兩次以迎合最大的num1,num2或num3。我已經測試了所有3個場景並且它可以工作。 – Madrical

+0

這是真的不知道爲什麼人們downvoting所有的答案 – Neil

-1

無必要if聲明:

Console.WriteLine("Largest Number: " + Math.Max(Math.Max(num1, num2), num3)); 
Console.WriteLine("Smallest Number: " + Math.Min(Math.Min(num1, num2), num3)); 
+4

它清楚地表明,OP正試圖瞭解如何使用if語句 – Steve

+0

這個問題字面上表示他們想用if語句來做。 – juharr

2

要獲得最大/最小值,最好的方法是有一個變量來存儲當前的最大/最小值,而不是檢查每個案例(置換)。

喜歡的東西

int largest = int.MinValue; 
    int smallest = int.MaxValue; 

    if (num1 > largest) 
     largest = num1; 
    if (num2 > largest) 
     largest = num2; 
    if (num3 > largest) 
     largest = num3; 

    if (num1 < smallest) 
     smallest = num1; 
    if (num2 < smallest) 
     smallest = num2; 
    if (num3 < smallest) 
     smallest = num3; 

//output largest/smallest 
+0

這也真的有用,謝謝隊友。 – Madrical

+0

這是目前唯一的答案,如果其中兩個值相等,則不會生成多個輸出 –