【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.