1. 程式人生 > >【Unity&C#】使用?:表示式比較三個數大小並對其排序

【Unity&C#】使用?:表示式比較三個數大小並對其排序

使用 ? : 表示式比較三個數大小並對其排序,C#的程式碼怎麼寫

------------------------------------------------------------------------下面是錯誤的示範

設定A,B,C三個整型數字,使用 Random.Range函式來對這3個數字賦值

如下所示:

        a = Random.Range(0, 100);// a
        b = Random.Range(0, 100 - a);// b
        c = 100 - a - b;//c

        string classify = ((Mathf.Abs(a - c)) > (Mathf.Abs(b - c))) ? "A" : ((b > c) ? "B" : "C");//3個數字中的最 大 值
        string classify1 = ((Mathf.Abs(a - c)) < (Mathf.Abs(b - c))) ? "A" : ((b < c) ? "B" : "C");//3個數字中的最 小 值

        Debug.Log(classify + classify1);

//這個是找到3個數值中的最大值

--------------------------------------------------------------------下面是正確的程式碼以及 邏輯 思路

void JudgeMaxMiddleMin()
    {
        //int a, b, c;
        a = Random.Range(1, 100);// a
        b = Random.Range(1, 100 - a);// b
        c = 100 - a - b;//c
        //round (a > b ? a:b)
        //triangle (a < b ? a :b)
        int max =  ((a > b ? a : b) > c ) ? (a > b ? a : b) : c;//大Max = round > c ? round : c
        int middle = ((a > b ? a : b) > c) ? ((a < b ? a : b) > c ? (a < b ? a : b) : c) : (a > b ? a : b);//中Middle = round > c ? ( triangle > c ? triangle : c) : round
        int min = ((a > b ? a : b) > c) ? ((a < b ? a : b) > c ? c : (a < b ? a : b)) : (a < b ? a : b);//小Min = round > c ? (  triangle > c ? c : triangle) : triangle


        Debug.Log("  Max  "+max +"  Middle  "+ middle + "  Min " + min);
        Debug.Log("  A  " + a + "  B " + b + "  C " + c);
        
    }

邏輯圖如下所示:

首先a和b進行數值比較,其結果再和c進行比較。把邏輯轉換為?:表示式即可

大圖

--------------------------------------------------------------------

參考資料:

2.

3.

4.

5.

6.

7.