2017-04-15 13 views
-2

こんにちは、実際に私はこの問題をどのように呼び出すのか分かりません。いくつかの静的な値を追加するには?

まあ、私は配列のいくつかの重要なテストを行うクラスがあります。テストは配列の長さに依存します。

class Test 
{ 
    public void CritTest(double[] n)  
    {  
     int j = n.Length(); 
     double zen;  

     if (j == 3)   
      zen = n.Max()/0.941; 

     if (j == 4)  
      zen = n.Max()/0.765; 

     if (j == 5)   
      zen = n.Max()/0.642; 

     if (j == 6)   
      zen = n.Max()/0.560; 

    //and so on... 
    }  
} 

このように、それは、値が対応している長さに依存します。これまでのところそれをどう扱うのか?

私は、特定の重要な表を持って

+2

Nの長さから一定の計算可能であり、またはそれは任意ですか? –

+0

@IainBrown、それは特別な重要なテーブル – TomooMGL

+0

から来たのですか? – TomooMGL

答えて

0

(例えばファイルからそれをロードするのですか?)あなたは、ルックアップテーブルを処理する方法によって異なりますが、ここで参照として配列を使用するための簡単な方法です。範囲の検証は、読者の練習として残されています。

class test 
{ 
    public void CritTest(double[] n)  
    {  
     double [] lookupTable = { 0,0,0, 0.941, 0.765, 0.642, 0.560}; 
     int j = n.Length(); 
     double zen;  

     zen = n.Max()/lookupTable[j]; 
    }  
} 
+1

あなたは 'lookupTable'に' 0'を持っていない方がいいです... –

1
class Test 
{ 
    public Dictionary<int, double> GetTargetValues() 
    { 
     var result = Dictionary<int, double>(); 

     result.Add(3, 0.941); 
     result.Add(4, 0.765); 
     result.Add(5, 0.642); 
     result.Add(6, 0.560); 

     // You can fill this dictionary dynamically or add more lines statically 

     return result; 
    } 

    public void CritTest(double[] n)  
    {  
     int length = n.Length(); 
     double zen; 
     var targetValues = this.GetTargetValues(); 

     if (targetValues.ContainsKey(length)) 
     { 
      zen = n.Max()/targetValues[length]; 
     } 
     else 
     { 
      throw new Exception("The value ${length} is not registered."); 
     } 

    }  
} 
関連する問題