2023年2月18日 星期六

c# double除零出現非數值問題及使用方法參數的bug

 

這是上班第一天,帶我的前輩給我出的回家作業的其中一支小程式,功能是算陣列的平均跟找出最大值。
第一次寫完的版本有出現兩個bug,其中一個是因為在算平均值的時候我的型別是使用小數,所以放平均值的型別是double
在空資料狀態計算時,使用int整數時除零會跳出例外,可用例外處理來攔截,不過小數卻不會跳例外,而是會跑出非數值,最後使用if判斷來擋掉這個不正常的狀況,修改如下:

第二個bug則是同樣的陣列數值跟筆數時,點計算第一次的結果會是正常的,但第二次以後的平均值會越來越大,如下圖所示。


發現是方法的輸入參數跟輸出參數我是都用一樣的陣列,導致處理的時候,輸入的陣列在方法處理的時候被影響到導致平均值每次按計算都會越來越大。
最後解決是在宣告一個存放輸出結果的陣列來傳回即可,修改如下: