在调试时为什么visual studio说中位数是一个未分配的变量? -Answered

时间:2011-10-12 03:01:07

标签: c#

所以,我正在尝试制作一个分析数据的控制台程序(很好)。问题是,当我打印中位数时,它告诉我它是未分配的(调试器实际上是这样说的)。我做错了什么? 使用System;

using System;

class midpointFormula
{
    static void Main()
    {
    double min, max, range, median, quartile1, quartile3, internalQuartileRange, IQR15;
    int dataPoints, dataPoints1, count, count1;
    double[] dataSet;
    bool isEven;

    count = 0;

    Console.WriteLine("This program allows you to find several diffrent values from the data");
    Console.Write("Please enter the amount of data points you would like to use: ");

    dataPoints = int.Parse(Console.ReadLine());
    dataPoints1 = dataPoints - 1;

    dataSet = new double[dataPoints];

    #region Enter Data
    while (count < dataPoints)
    {

        count1 = count + 1;

        Console.Write("Please enter the {0} datapoint: ", count1);

        dataSet[count] = double.Parse(Console.ReadLine());

        ++count;

    }
    #endregion

    min = dataSet[0];
    max = dataSet[dataSet.Length - 1];
    range = max - min;


    #region Even Check
    if (dataPoints % 2 == 0)
    {
    isEven = true;
    }
    else
    {
    isEven = false;
    }
    #endregion

    if (isEven == true)
    {
        int medianPoint;

        medianPoint = (dataPoints / 2) - 1;

        median = dataSet[medianPoint];


    }
    else


    #region Output
    Console.WriteLine("Minimum is : {0}", min);
    Console.WriteLine("Maximum is : {0}", max);
    Console.WriteLine("Range is   : {0}", range);
    Console.WriteLine("Median is  : {0}", median);
    #endregion

    Console.ReadKey();
}

}

注意:是的,我知道如果数据点数量不均匀,它将无法计算数据点,我仍在努力。

1 个答案:

答案 0 :(得分:4)

如果median为真,则仅为isEven分配值。如果不是,它将被酉化。由于使用甚至可能未分配的变量永远可接受,因此编译器禁止它。

P.S。报告此错误的不是调试器,它是编译器

P.P.S。您的其他声明发生了什么变化? - 基于缩进,它看起来像一个不完整的想法和一个明显的错误。 (Console.WriteLine("Minimum is : {0}", min);只会在isEven为false时运行,但其余语句运行,因为它们没有括号括起来。)