调试时,为什么visual studio说中位数是一个未分配的变量?回答

本文关键字:一个 分配 回答 变量 为什么 visual studio 中位数 调试 | 更新日期: 2023-09-27 18:11:05

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

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();
}

}

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

调试时,为什么visual studio说中位数是一个未分配的变量?回答

因为median只有在isEven为真时才赋值。如果不是,它将被初始化。由于永远不能接受使用即使也可能被取消赋值的变量,因此编译器禁止这样做。

注:不是调试器报告这个错误,而是编译器报告这个错误。

P.P.S.else语句发生了什么?-基于缩进,这看起来像是一个不完整的想法和一个明显的错误。(Console.WriteLine("Minimum is : {0}", min);只会运行,如果isEven是假的,但其余的那些语句运行,因为它们没有被大括号括起来。)