簡體   English   中英

如何使用本地列表作為函數的輸入參數

[英]How to use local list as an input parameter for function

我正在為學校做一個項目,並且花了很長時間讓它發揮作用。

程序流程如下:

這是使用其結構進行所有統計的函數:

        public struct DescriptiveStat
    {
        public double max, min, sum, avg, var, stddev;
        public string range;
    }

    public static DescriptiveStat GetDescriptiveStat(List<double> data)
    {
        DescriptiveStat result = new DescriptiveStat();
        double sum = 0, sqSum = 0, max = data[0], min = data[0];
        foreach (double x in data)
        {
            sum += x;
            sqSum += Math.Pow(x, 2);
            if (x > max)
                max = x;
            if (x < min)
                min = x;
        }
        int n = data.Count;
        result.sum = sum;
        result.max = max;
        result.min = min;
        result.avg = sum / n;
        result.var = (sqSum - n * Math.Pow(result.avg, 2)) / n;
        result.stddev = Math.Sqrt(result.var);
        return result;
    }

該功能是我老師設置的,不能更改。 它必須采用List<double> data並返回結果。

目前我擁有它,因此當我使用單個變量按“DescriptiveStat”表單中的“生成”按鈕時,它會調用我的函數將數據加載到列表中,以准備將其發送到上面的 DescriptiveStat 函數。 這是我的代碼:

        public void GetDescriptiveStat()
    {
        List<double> data = new List<double>();
        double temp;
        data.ToArray();
        for(int i = 0; i < 94; i++)
        {
            temp = dblValues[i][0];
            data.Add(temp);
        }

        data.ToList();
        //data.ForEach(Console.WriteLine);

    }

我知道它正在正確地將數據讀入列表,但是我在使用此本地列表作為函數DescriptiveStat GetDescriptiveStat(List<double>data)的參數時遇到問題 - 當我嘗試插入類似double result = Mathtool.GetDescriptiveStat(data); 它給了我錯誤:

  • 無法將類型“MultivariateStatistics.Mathtool.DescriptiveStat”隱式轉換為“double”

任何人都可以幫助我做錯什么,或者我如何使用列表作為函數的參數?

謝謝你。

首先,您不必將列表轉換為數組( data.ToArray() ),然后再轉換回列表( data.ToList() )。 Second 而不是void讓您的函數返回List<double>如下所示:

public List<double> GetDescriptiveStat()
{
    List<double> data = new List<double>();
    for (int i = 0; i < 94; i++)
    {
        data.Add(dblValues[i][0]);
    }
    return data;
}

現在,因為您的函數GetDescriptiveStat()返回一個列表,您可以將其作為輸入參數發送到教師函數GetDescriptiveStat(List<double> data)

DescriptiveStat myData = GetDescriptiveStat(GetDescriptiveStat());

也許有更好的方法可以做到這一點,但您明確表示教師功能無法更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM