如何添加一些静态值?

时间:2017-04-15 00:23:51

标签: c# arrays

您好,实际上我不知道如何解决这个问题。

好吧,我有一个类对数组进行一些关键测试。测试取决于阵列的长度。

示例

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 个答案:

答案 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.");
        }

    }    
}

答案 1 :(得分: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];
    }    
}